2013-03-16 280 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

相關問題