0

我有一个要存储到数组中的东西的列表。该列表是一系列 split-awk 操作的输出:

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

我哪里做错了?谢谢。

4

2 回答 2

3

您将结果存储在单个变量中,而不是数组中。将其更改为使用复合赋值

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

(注意周围的额外括号)。

于 2013-10-18T23:34:53.600 回答
0
$ arr=(
    $(
        printf '%s\n' /sys/block/sd*/device |
            xargs readlink -f |
            grep -oP '\d+(?=:\d+:\d:\d+)'
    )
)
$ echo ${arr[0]}
0
于 2013-10-19T00:12:58.537 回答