我正在使用 ubuntu 18.04 服务器版本并且处于终端中。
# hdparm -I /dev/sd[a-c] | grep "/dev\|level\|Model"
将发行相当于
# hdparm -I /dev/sda | grep "/dev\|level\|Model"
# hdparm -I /dev/sdb | grep "/dev\|level\|Model"
# hdparm -I /dev/sdc | grep "/dev\|level\|Model"
然而
# smartctl --nocheck standby -i /dev/sd[a-c] | grep "Model\|Power"
只会给我
# smartctl --nocheck standby -i /dev/sda | grep "Model\|Power"
并且它不会发出 /dev/sdb 和 /dev/sdc 的命令
我怎样才能达到预期的效果?
谢谢
猕猴桃
答案1
命令扩展以内联方式进行,不会扩展为多个命令。如果您set -x
在 shell 中,则可以看到它实际执行的命令。
对于第一个命令
# hdparm -I /dev/sd[a-c] | grep "/dev\|level\|Model"
假设/dev/sda
和都存在,/dev/sdb
则/dev/sdc
实际运行的命令将是
# hdparm -I /dev/sda /dev/sdb /dev/sdc | grep "/dev\|level\|Model"
该hdparm
程序处理多个参数并产生与发出三个单独命令相同的输出。
实际情况是,它smartctl
不会处理多个参数,因此最好必须针对这三个设备手动运行该命令。
或者你可以使用循环:
# for arg in /dev/sd[a-c]
> do
> smartctl --nocheck standby -i "$arg" | grep "Model\|Power"
> done