Я хочу разбить 'hello'
на h e l l o
массив, используя только bash, я мог бы сделать это в sed с помощью, sed 's/./& /g'
но я хочу знать, как разбить строку на массив в Bash, когда я не знаю, что будет разделитель, или разделитель любой один символ Я не думаю, что смогу использовать ${i// /}
без какой-либо креативности, потому что разделитель неизвестен, и я не думаю, что выражение принимает регулярное выражение. Я пытался использовать BASH_REMATCH с [[string = ~ ([az].). *]], Но он не работает, как я ожидал. Как правильно использовать только bash для выполнения определенного string.split()
типа поведения? Причина в том, что я пытаюсь написать утилиту rev во всех 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
Но я использовал tr и sed, я хочу знать, как правильно делать разбиение, и тогда я исправлю это, чтобы все было bash. Просто для удовольствия.
[[ $string =~ ${string//?/(.)} ]]
будет установлено по BASH_REMATCH[]
мере необходимости, см. мой ответ на вопрос, на который Питер Мортенсен ссылается для объяснения.