是否有任何标准命令可以在不使用 shell 功能或启动 shell 的情况下否定作为参数提供的另一个命令的退出代码?
我有一个程序,它根据system()
调用的退出代码执行某些操作。我有另一个程序通过退出代码返回其状态。但我调用的程序返回的结果与我想要的相反。我可以简单地指定类似的内容bash -c '....'
,但是有更简单的方法吗?
PS 是的,我知道我可能正在尝试优化一些可能并不那么重要的东西。但最主要的是我很好奇,因为unix似乎对几乎所有事情都有一个命令,为什么我找不到一个简单的否定退出代码命令。
答案1
AFAIK 不在标准工具集中。标准工具集中的sh
(及其!
)将最接近您想要的。
system("sh", "-c", "! \"$0\" \"$@\"", "cmd", "arg1", "arg2"...)
其他可以执行命令的工具要么没有该功能(find、env、xargs...),要么调用 shell 本身(ed、awk...)来执行命令。
早期的 unice 有一个“if”命令,但随着 Bourne shell 带来了扩展的控制语句,它就消失了。
答案2
尝试这个:
[ ! `<yourFirtsCommand>` ]
替换<yourFirtsCommand>
为您的命令。我建议您使用正确的引号!
为了避免 [ ] 出现问题,您可以使用:
test ! `<yourFirtsCommand>`