[英]Returning true from a shell pipeline
我想根据另一个命令的返回值在gnu makefile中有条件地执行命令。
具体来说,是这样的:
lsmod | grep -q pfc && sudo rmmod pfc
如果lsmod
输出的当前模块列表包含pfc
,请将其删除。 可以解决这个小问题:如果grep
命令失败(模块不存在),则整个管道将返回非零值,这将导致该命令被解释为失败,但实际上这是成功的。
我可以加一个; true
最后始终为; true
总是强制它成功,但这不会在rmmod
命令中捕获失败!
我想要的东西大部分都可以在sh
实现中移植,但是从技术上讲,我想我正在使用dash
因为这就是sh
在Ubuntu上的要点。
您可以通过使用echo -n
等nop命令清除退出值来处理预期的失败:
if lsmod | grep -q pfc; then sudo rmmod pfc; else echo -n; fi
如果输出丢失,则执行nop命令,并且整行返回$?=0
。
编辑 :
建议的更简单的nop如下所示:
if lsmod | grep -q pfc; then sudo rmmod pfc; else true; fi
回应
if lsmod | grep -q pfc; then sudo rmmod pfc; else :; fi
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.