Ich möchte aufgeteilt 'hello'
in h e l l o
nur bash unter Verwendung in einem Array, konnte ich es mit in sed tun , sed 's/./& /g'
aber ich möchte wissen , wie eine Zeichenfolge in ein Array in Bash aufzuspalten , wenn ich nicht weiß , was das Trennzeichen wäre, oder das Trennzeichen ist jedes einzelnes Zeichen. Ich glaube nicht, dass ich ${i// /}
ohne etwas Kreativität verwenden kann, da das Trennzeichen ein Unbekannter ist, und ich glaube nicht, dass dieser Ausdruck Regex akzeptiert. Ich habe versucht, BASH_REMATCH mit [[string = ~ ([az].). *]] Zu verwenden, aber es funktioniert nicht wie erwartet. Was ist der richtige Weg, um nur Bash zu verwenden, um eine string.split()
Art von Verhalten zu erreichen? Der Grund ist, dass ich versuche, das rev-Dienstprogramm in allen Bashs zu schreiben:
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
Aber ich habe tr und sed verwendet, ich möchte wissen, wie man den Split richtig macht, und dann werde ich ihn so reparieren, dass alles Bash ist. Nur zum Spaß.
[[ $string =~ ${string//?/(.)} ]]
wird BASH_REMATCH[]
nach Bedarf eingestellt, siehe meine Antwort auf die Frage, auf die Peter Mortensen verweist, für eine Erklärung.