2013-03-16 230 views
2

这看起来应该是很容易的,但我似乎无法让它工作!我有一个字符串,我想根据新行分成一个数组。如何将一个字符串拆分成一个数组

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

echo $devices 
serial1 device 
serial2 device 

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

回答

3

IFS(内部字段分隔符)决定单词在bash中的分割方式。未引用的扩展总是被拆分。默认情况下,这是\ t,\ n和''。您可以将其设置为\ n,让您的单词仅在新行上分隔。

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

上的bash(4.0+)的较新版本的另一种选择,就是mapfile命令。

mapfile -t arr < <(yourfunc "$devices") 
+0

应该是一个更容易的方法,但它的工作原理。另外,当我完成时我也称为“未设置的IFS”,所以它不会改变其他程序。 – schwiz 2013-03-16 20:26:19

+0

请注意,'IFS'通常是默认设置的,因此取消设置与将其恢复到旧值不同。 – chepner 2013-03-16 21:06:25

相关问题