Eu quero dividir 'hello'
em h e l l o
em uma matriz usando apenas bash, eu poderia fazê-lo em sed com sed 's/./& /g'
mas eu quero saber como dividir uma string em um array em Bash quando eu não sei o que o delimitador seria, ou o delimitador é qualquer caractere único. Acho que não posso usar ${i// /}
sem criatividade, porque o delimitador é desconhecido e não acho que essa expressão aceite regex. Eu tentei usar BASH_REMATCH com [[string = ~ ([az].). *]] Mas não funciona como eu esperava. Qual é a maneira correta de usar apenas o bash para realizar um string.split()
tipo de comportamento? A razão é que eu estou tentando escrever o utilitário rev em todos os bash:
while read data; do
word=($(echo $data|tr ' ' '_'|sed 's/./& /g'))
new=()
i=$((${#word[@]} - 1))
while [[ $i -ge 0 ]]; do
new+=(${word[$i]})
(( i-- ))
done
echo ${new[@]}|tr -d ' '|tr '_' ' '
done
Mas eu usei tr e sed, quero saber como fazer a divisão corretamente e depois vou consertar tudo. Apenas por diversão.
[[ $string =~ ${string//?/(.)} ]]
definido BASH_REMATCH[]
como necessário, veja minha resposta à pergunta a que Peter Mortensen vincula para obter uma explicação.