如何在fish shell 中否定if 语句的程序错误代码?

How to negate a program's error code for an if statement in fish shell?

我想做类似于这些语句中的任何一个的事情,可能类似于 bash,但收到错误:

if ! prog ...
  ....

错误: fish: Unknown command '! prog ...'

if test ! prog ...
  ....

错误: test: Expected a combining operator like '-a' at index 2

最后只用了 $status

if test "$status" != "0"
  ...

我不喜欢将语句与我检查其错误代码的位置分开,以防将来意外的代码维护在中间插入其他语句,即使与 echo 一样几乎无害,但我找不到另一种方法是在测试线上使用程序调用来获得我想要的否定条件。

我想我可以将其中的一些 'status' 和否定逻辑包装到一个函数中,但这似乎需要更多的工作,我希望我缺少一个更简洁的语法作为条件语句.

您正在查找 not 关键字:

if not false
   echo Foo
end