如何使用 IFS 将字符串拆分为字母并在无空格/空、空格和字符处读取 -?

Bre*_*eph 3 bash read

我有一个字符串-w o rd
我需要将它拆分为w o r d或数组,因为'w' 'o' 'r' 'd' 它并不重要。
我已经尝试了以下

IFS='\0- ' read -a string <<< "-w o rd"  
echo ${string[*]}
Run Code Online (Sandbox Code Playgroud)

rd不会分裂。我怎样才能让它分裂

mur*_*uru 6

你不能在bash使用IFS就没有什么(它拆分是一个字符)。rd in之间没有字符rd。无空格和无字符与空字符不同。

如果您希望每个字符作为数组中的一个单独元素,我能想到的一种方法是单独读取每个字符并将其附加到数组中(并使用 IFS 去除空格和-):

bash-4.4$ while IFS=' -' read -n1 c ; do [[ -n $c ]] && foo+=("$c"); done <<<"-w o rd"
bash-4.4$ declare -p foo
declare -a foo=([0]="w" [1]="o" [2]="r" [3]="d")
Run Code Online (Sandbox Code Playgroud)