我想只使用bash 拆分'hello'
成h e l l o
数组,我可以用sed来做,sed 's/./& /g'
但是我想知道当我不知道分隔符是什么,或者分隔符是任意的时,如何在Bash中将字符串拆分成数组单个字符。我不认为我不能${i// /}
没有创造力,因为分隔符是一个未知数,我也不认为表达式接受正则表达式。我尝试将BASH_REMATCH与[[string =〜([az]。)。*]]结合使用,但是它没有按预期工作。仅使用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。纯娱乐。
给定它的大小,堆栈溢出上必须有跨站点重复项。Bash是一个候选者:将字符串拆分为字符数组。
—
彼得·莫滕森
[[ $string =~ ${string//?/(.)} ]]
将BASH_REMATCH[]
根据需要设置,请参阅我对彼得·莫滕森(Peter Mortensen)链接的问题的回答以获取解释。