Je veux me scinder 'hello'
dans h e l l o
un tableau en utilisant uniquement bash, je pourrais le faire dans sed avec sed 's/./& /g'
mais je veux savoir comment diviser une chaîne en un tableau dans Bash quand je ne sais pas ce que serait le délimiteur, ou le délimiteur est tout caractère unique. Je ne pense pas pouvoir l'utiliser ${i// /}
sans créativité car le délimiteur est un inconnu, et je ne pense pas que cette expression accepte l'expression régulière. J'ai essayé d'utiliser BASH_REMATCH avec [[string = ~ ([az].). *]] Mais cela ne fonctionne pas comme prévu. Quelle est la bonne façon d'utiliser uniquement bash pour accomplir un string.split()
type de comportement? La raison en est que j'essaie d'écrire l'utilitaire rev dans tous les 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
Mais j'ai utilisé tr et sed, je veux savoir comment faire le split correctement et ensuite je vais le réparer pour être tout bash. Juste pour le fun.
[[ $string =~ ${string//?/(.)} ]]
sera défini BASH_REMATCH[]
comme requis, voir ma réponse à la question sur laquelle Peter Mortensen établit un lien pour une explication.