首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Bash: if (命令)|(命令)

Bash: if (命令)|(命令)
EN

Stack Overflow用户
提问于 2013-05-09 17:58:55
回答 2查看 171关注 0票数 1

我知道以下命令在以下情况下返回0 (true)或1 (false):

代码语言:javascript
复制
hdparm -C /dev/sda |grep "active/idle"

如果磁盘处于活动状态,则为true,否则为false。我想以编程方式使用此结果来显示另一个文本或将其用于监视。我已经尝试过了,但它不起作用(语法错误):

代码语言:javascript
复制
if [ hdparm -C /dev/sda |grep "active/idle" ]; then
    echo sda1 is ON
else
    echo sda1 is OFF
fi

它是如何正确工作的?

EN

回答 2

Stack Overflow用户

发布于 2013-05-09 18:39:17

我通常只是简单地使用

代码语言:javascript
复制
if hdparm -C /dev/sda | grep -q 'active/idle' ; then
    echo sda1 is ON
else
    echo sda1 id OFF
fi
票数 3
EN

Stack Overflow用户

发布于 2013-05-09 18:03:50

将条件语句包装在子subshell中:

代码语言:javascript
复制
if [ -z "$(hdparm -C /dev/sda |grep "active/idle")" ]; then

-z在这里测试空字符串。

编辑:正如@abasu建议的那样,在这种情况下,最好测试grep的返回码,如果表达式匹配,返回码将为0:

代码语言:javascript
复制
hdparm -C /dev/sda | grep -q "active/idle"
status=$?
if [ $status -eq 0]; then

您将在test man page上找到有关条件语句的所有详细信息。但是,您的shell可能会进一步扩展语法,就像bash一样。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/16459095

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档