不使用 shell 功能取消退出代码

不使用 shell 功能取消退出代码

是否有任何标准命令可以在不使用 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>`

相关内容