2013-10-18 42 views
0

我有我想要存儲到數組中的東西的列表。這份名單是由一系列分在awk操作的輸出:無法訪問在shell腳本中由輸出ls創建的數組中的元素

Array=$(ls -ld /sys/block/sd*/device | awk -F'/' '{print $1}') 

的命令。如果我想存儲的結果

$ ls -ld /sys/block/sd*/device | awk -F'/' '{print $1}' 

將返回(例如)

0 
1 

到一個數組,使每個數字是一個元素,我應該訪問它通過

echo ${Array[0]} 
echo ${Array[1]} 

然而,第二個命令任何回報而第一個返回

0 1 

我原先預計的結果是

Array[0] = 0 
Array[1] = 1 

在哪裏我做錯了什麼?謝謝。

+0

這不是一個數組賦值。 – Barmar

回答

3

您正在將結果存儲在單個變量中,而不是存儲在數組中。將其更改爲使用複合賦值

Array=($(ls -ld /sys/block/sd*/device | awk -F'/' '{print $1}')) 

(注意周圍的額外括號中)。

+0

謝謝!它像魔術般運作! –

0
$ arr=(
    $(
     printf '%s\n' /sys/block/sd*/device | 
      xargs readlink -f | 
      grep -oP '\d+(?=:\d+:\d:\d+)' 
    ) 
) 
$ echo ${arr[0]} 
0