我知道以下命令在以下情况下返回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它是如何正确工作的?
发布于 2013-05-09 18:39:17
我通常只是简单地使用
if hdparm -C /dev/sda | grep -q 'active/idle' ; then
echo sda1 is ON
else
echo sda1 id OFF
fi发布于 2013-05-09 18:03:50
将条件语句包装在子subshell中:
if [ -z "$(hdparm -C /dev/sda |grep "active/idle")" ]; then-z在这里测试空字符串。
编辑:正如@abasu建议的那样,在这种情况下,最好测试grep的返回码,如果表达式匹配,返回码将为0:
hdparm -C /dev/sda | grep -q "active/idle"
status=$?
if [ $status -eq 0]; then您将在test man page上找到有关条件语句的所有详细信息。但是,您的shell可能会进一步扩展语法,就像bash一样。
https://stackoverflow.com/questions/16459095
复制相似问题