2

这似乎应该很容易,但我似乎无法让它工作!我有一个字符串,我想根据新行将其分成一个数组。

下面这基本上是我想要做的。

echo $devices
serial1 device
serial2 device

arr=$(magic_function $devices)
echo ${arr[0]}
serial1 device
echo ${arr[1]}
serial2 device
4

1 回答 1

3

IFS内部字段分隔符)确定单词在 bash 中的拆分方式。未加引号的扩展总是分开的。默认情况下,这是 \t、\n 和 ' '。您可以将其设置为 \n 以使您的单词仅在换行符上拆分。

IFS=$'\n' arr=( $(yourfunc "$devices") )

较新版本的 bash(4.0+)的另一个选项是mapfile命令。

mapfile -t arr < <(yourfunc "$devices")
于 2013-03-16T19:50:40.427 回答