bashだけを使って配列'hello'
に分割したいですh e l l o
。 sedで行うことができますが、sed 's/./& /g'
区切り文字が何であるか、区切り文字が何であるかわからない場合は、Bashで文字列を配列に分割する方法を知りたいです。単一文字。${i// /}
区切り文字が不明で、その式が正規表現を受け入れないため、創造性がなければ使用できないようです。 [[ string =~ ([az].).* ]] で BASH_REMATCH を試してみましたが、期待どおりに動作しませんでした。 bashだけを使用してstring.split()
特定のアクションを実行する正しい方法は何ですか?その理由は、すべての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で修正します。楽しみに。
ベストアンサー1
s="hello"
declare -a a # define array a
for ((i=0; i<${#s}; i++)); do a[$i]="${s:$i:1}"; done
declare -p a # print array a in a reusable form
出力:
文-aa='([0]="h" [1]="e" [2]="l" [3]="l" [4]="o")'
または(コメントを参照してください)
s="hello"
while read -n 1 c; do a+=($c); done <<< "$s"
declare -p a
出力:
文-aa='([0]="h" [1]="e" [2]="l" [3]="l" [4]="o")'