执行由以前的一个(即,只有当有一些输出)
应该是相当简单的回答的输出来确定命令:执行由以前的一个(即,只有当有一些输出)
比方说,我想执行由前一个Bash中的输出来确定的命令:
curl http://website.com 2> /dev/null | grep -i "test" --count | <MY-COMMAND>
我需要什么:如果grep
有一些比赛(至少1)<MY-COMMAND>
应该只执行。
我该如何做到这一点? “和退出状态是0,如果选择线找到1否则”:
此外,请随时添加匹配的标签,我不能拿出任何
你需要的grep的输出通过管道输送到你的命令?如果你不这样做,答案会更简单。自从grep的返回码这种情况下是成功的,只有当它找到一个匹配时,可以使用&&
或if
:
curl http://website.com 2> /dev/null | grep -q -i "test" && <MY-COMMAND>
if curl http://website.com 2> /dev/null | grep -q -i "test"; then
<MY-COMMAND>
fi
的&&
运营商执行的if-else检查的简便方法。这是一个短路操作,这意味着只有在左侧失效时才会执行右侧操作。
如果需要管道输出到您的命令,那么你就需要将输出保存到临时文件,试了比赛,然后执行你的命令:
if curl http://website.com 2> /dev/null | grep -i "test" > /tmp/grep.txt; then
<MY-COMMAND> < /tmp/grep.txt
fi
让我评论['ifne'](http://stackoverflow.com/questions/5524530/execute-command-determined前一个输出/ 5524551#5524551)是替代临时文件的替代方案。 – 2011-04-02 17:05:48
curl http://website.com 2> /dev/null | grep -i "test" && <MY-COMMAND>
从grep的手册页
& &仅如果先前的命令返回退出状态后执行该命令0
grep的'-q'选项增加了一些效率 – 2011-04-02 18:01:22
curl http://www.google.com 2>/dev/null | grep window -i -c && echo "this is a success"
姆。谁投票结束? – slhck 2011-04-02 17:04:25
有人认为这属于superuser.com(耸肩) – 2011-04-02 18:00:36