Converter string em array de caracteres [RESOLVIDO]

1. Converter string em array de caracteres [RESOLVIDO]

Luis Meirelles
luis_gustavo

(usa Kali)

Enviado em 17/06/2018 - 02:38h

Olá, gostaria de saber um método de pegar todos os argumentos que a pessoa inserir quando a mesma executar o script, e transformar a string resultante em uma array onde cada índice contém um, e apenas um caractere, com os espaços incluídos. Por exemplo:

Se eu digitar:

$ ./script.sh luis gustavo 


Quero que crie uma array como se eu fizesse assim:

vetor=("l" "u" "i" "s" " " "g" "u" "s" "t" "a" "v" "o") 


Pois preciso tratar cada caractere individualmente, e a pessoa pode digitar números, letras, espaços e pontuações.

Alguém pode me ajudar por favor??


  


2. MELHOR RESPOSTA


oxidante

(usa Debian)

Enviado em 17/06/2018 - 12:41h


#!/bin/bash

# pega o argumento passado e poe na var $args
args="$@"

vetor=()

# copia cada char do argumento para dentro da var $vetor
for ((i=0;i<${#args};i++)); do
vetor[$i]="${args:i:1}"
done

# exibe os elementos do $vetor
for ((i=0;i<${#vetor[@]};i++));do
echo "${vetor[$i]}"
done



3. Re: Converter string em array de caracteres [RESOLVIDO]

Mauriciodez
Mauriciodez

(usa Debian)

Enviado em 17/06/2018 - 11:31h

luis_gustavo escreveu:
Se eu digitar:
$ ./script.sh luis gustavo 



campeão, a princípio se vc digitar isso aí vai dar comando inválido.
A chamada da string não pode ser feita através de um "read" não ???

------------------------------------------| Linux User #621728 |-----------------------------------------

" Nem sempre é amigo aquele que te tira do buraco !!! ( Saddam Hussein )"

------------------------------------------| Linux User #621728 |-----------------------------------------



4. Re: Converter string em array de caracteres [RESOLVIDO]

Marcelo Oliver
msoliver

(usa Debian)

Enviado em 17/06/2018 - 13:45h

luis_gustavo escreveu:

Olá, gostaria de saber um método de pegar todos os argumentos que a pessoa inserir quando a mesma executar o script, e transformar a string resultante em uma array onde cada índice contém um, e apenas um caractere, com os espaços incluídos. Por exemplo:

Se eu digitar:

$ ./script.sh luis gustavo 


Quero que crie uma array como se eu fizesse assim:

vetor=("l" "u" "i" "s" " " "g" "u" "s" "t" "a" "v" "o") 

Pois preciso tratar cada caractere individualmente, e a pessoa pode digitar números, letras, espaços e pontuações.
Alguém pode me ajudar por favor??

Boa tarde.
Estou sem linux agora, portanto não tenho como testar...
Mas,teste o seguinte comando
Vetor=($(sed 's/ //g' <<< "$@"|sed 's/./& /g'))
Marcelo Oliver


5. Re: Converter string em array de caracteres [RESOLVIDO]


oxidante

(usa Debian)

Enviado em 17/06/2018 - 14:10h

msoliver escreveu:
Boa tarde.
Estou sem linux agora, portanto não tenho como testar...
Mas,teste o seguinte comando
Vetor=($(sed 's/ //g' <<< "$@"|sed 's/./& /g'))
Marcelo Oliver


Boa tarde Marcelo, o teu sed tá quase 100%, só falta pegar os espaços! Podes corrigir?


6. Re: Converter string em array de caracteres [RESOLVIDO]

Marcelo Oliver
msoliver

(usa Debian)

Enviado em 17/06/2018 - 17:17h

oxidante escreveu:

msoliver escreveu:
Boa tarde.
Estou sem linux agora, portanto não tenho como testar...
Mas,teste o seguinte comando
Vetor=($(sed 's/ //g' <<< "$@"|sed 's/./& /g'))
Marcelo Oliver


Boa tarde Marcelo, o teu sed tá quase 100%, só falta pegar os espaços! Podes corrigir?

O primero sed é quem tira os espaços...

Segue:
Vetor=($(sed 's/./\"&\" /g' <<< "$@"))
Marcelo Oliver


7. Re: Converter string em array de caracteres [RESOLVIDO]


oxidante

(usa Debian)

Enviado em 17/06/2018 - 17:45h

msoliver escreveu:
O primero sed é quem tira os espaços...

Segue:
Vetor=($(sed 's/./\"&\" /g' <<< "$@"))
Marcelo Oliver

Eu tinha testado sem o primeiro sed e tb não pegava os espaços.
Com esse seu último código a var vetor fica com 7 elementos em vez de 5 usando a string "a b c".
Output:

./teste.sh a b c
"a"
"
"
"b"
"
"
"c"



8. Re: Converter string em array de caracteres [RESOLVIDO]

Luis Meirelles
luis_gustavo

(usa Kali)

Enviado em 17/06/2018 - 20:50h

oxidante escreveu:


#!/bin/bash

# pega o argumento passado e poe na var $args
args="$@"

vetor=()

# copia cada char do argumento para dentro da var $vetor
for ((i=0;i<${#args};i++)); do
vetor[$i]="${args:i:1}"
done

# exibe os elementos do $vetor
for ((i=0;i<${#vetor[@]};i++));do
echo "${vetor[$i]}"
done



Oxidante, muito obrigado, isso era EXATAMENTE o que eu precisava


9. Re: Converter string em array de caracteres [RESOLVIDO]

Luis Meirelles
luis_gustavo

(usa Kali)

Enviado em 17/06/2018 - 20:53h

Olá, Muito obrigado a TODOS
Todas as soluções foram muito bem boladas, mas a que eu mais me identifiquei foi com a solução do Oxidante. Mesmo assim todos me ajudaram,tenho certeza de que todas as soluções foram muito úteis






Patrocínio

Site hospedado pelo provedor RedeHost.
Linux banner

Destaques

Artigos

Dicas

Tópicos

Top 10 do mês

Scripts