我有一个我要存储到数组中的事项列表。该列表是一系列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
我哪里做错了?感谢。
答案 0 :(得分:3)
您将结果存储在单个变量中,而不是数组中。将其更改为使用复合赋值:
Array=($(ls -ld /sys/block/sd*/device | awk -F'/' '{print $1}'))
(注意额外的括号)。
答案 1 :(得分:0)
$ arr=(
$(
printf '%s\n' /sys/block/sd*/device |
xargs readlink -f |
grep -oP '\d+(?=:\d+:\d:\d+)'
)
)
$ echo ${arr[0]}
0