Saya ingin memecah 'hello'
menjadi h e l l o
dalam array hanya menggunakan bash, saya bisa melakukannya dengan sed 's/./& /g'
tetapi saya ingin tahu bagaimana membagi string ke dalam array di Bash ketika saya tidak tahu apa pembatas akan menjadi, atau pembatas adalah karakter tunggal. Saya tidak berpikir saya dapat menggunakan ${i// /}
tanpa kreativitas karena pembatas adalah tidak diketahui, dan saya tidak berpikir bahwa ekspresi menerima regex. Saya mencoba menggunakan BASH_REMATCH dengan [[string = ~ ([az].). *]] Tetapi tidak berfungsi seperti yang saya harapkan. Apa cara yang tepat untuk menggunakan hanya bash untuk mencapai string.split()
jenis perilaku? Alasannya adalah bahwa saya mencoba untuk menulis utilitas rev di semua 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
Tapi saya menggunakan tr dan sed, saya ingin tahu bagaimana melakukan split dengan benar dan kemudian saya akan memperbaikinya menjadi semua bash. Hanya untuk bersenang-senang.
[[ $string =~ ${string//?/(.)} ]]
akan ditetapkan BASH_REMATCH[]
sesuai kebutuhan, lihat jawaban saya untuk pertanyaan yang ditanyakan oleh Peter Mortensen untuk penjelasan.