我知道以下命令在以下条件中返回0(true)或1(false):
hdparm -C /dev/sda |grep "active/idle"
如果磁盘处于活动状态,则为true,否则为false。我想以编程方式使用此结果来显示另一个文本或将其用于监视。我试过这个,但它不起作用(语法错误):
if [ hdparm -C /dev/sda |grep "active/idle" ]; then
echo sda1 is ON
else
echo sda1 is OFF
fi
它是如何正常工作的?
此外,是否有一个关于Bash条件表达式的明确可理解的权威指南可以解释每种可能情况的所有不同类型的表达式语句?
答案 0 :(得分:3)
我通常只是使用
if hdparm -C /dev/sda | grep -q 'active/idle' ; then
echo sda1 is ON
else
echo sda1 id OFF
fi
答案 1 :(得分:1)
将条件语句包装在子shell中:
if [ -z "$(hdparm -C /dev/sda |grep "active/idle")" ]; then
-z
在这里测试空字符串。可能您还必须将active/idle
替换为active
。
hdparm -C /dev/sda | grep -q "active/idle"
status=$?
if [ $status -eq 0]; then
您将在test man page上找到有关条件语句的所有详细信息。但是,你的shell可能会进一步扩展语法,就像bash那样。