【发布时间】:2017-04-18 11:07:51
【问题描述】:
我正在尝试在 bash 脚本中执行以下操作:将所有不以 /dev/sda 开头的设备节点文件添加到名为 devices 的数组中。由于脚本将在只读文件系统上执行,我不能使用此处的文档。
这是我的代码:
devices=()
ls -1 /dev/hd* /dev/sd* | while read -r device; do
if [[ "$device" != "/dev/sda"* ]]; then
devices+=($device)
fi
done
我不明白为什么在命令末尾,devices 仍然是空的。例如,我可以通过在将其添加到数组之前/之后添加命令echo $device 来成功打印每个项目。但是为什么不添加它们呢?
此外,如果我使用此处的文档运行相同的命令,一切正常:
devices=()
while read -r device; do
if [[ "$device" != "/dev/sda"* ]]; then
devices+=($device)
fi
done <<< $(ls -1 /dev/hd* /dev/sd*)
在这些命令的末尾,数组devices 被正确填充。
您能帮我理解为什么第一个代码提取不起作用而第二个代码提取起作用吗?我做错了什么?
【问题讨论】: