私はbashのみを使用して配列に分割'hello'
したいのですがh e l l o
、sedでそれを行うことができますsed 's/./& /g'
が、区切り文字が何であるかわからない場合、または区切り文字が任意の場合に、文字列をBashの配列に分割する方法を知りたいです単一の文字。${i// /}
区切り文字が不明なため、ある程度の創造性がなければ使用できないと思います。また、式が正規表現を受け入れるとは思いません。[[string =〜([az]。)。*]]でBASH_REMATCHを使用してみましたが、期待どおりに動作しません。ある種string.split()
の動作を達成するためにbashのみを使用する適切な方法は何ですか?その理由は、すべてのbashでrevユーティリティーを記述しようとしているためです。
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になるように修正します。楽しみのためだけに。
そのサイズを考えると、Stack Overflowにはサイト間の重複が必要です。候補の1つはBashです。文字列を文字配列に分割します。
—
Peter Mortensen
[[ $string =~ ${string//?/(.)} ]]
BASH_REMATCH[]
必要に応じて設定します。説明については、Peter Mortensenがリンクする質問への私の回答を参照してください。