变量不能用作命令

Variables may not be used as commands

使用 fish shell,我正在编写非常简单的脚本来检查命令执行

#!/usr/bin/fish
command

if $status
    echo "Oops error"
else
    echo "Worked OK"
    #...
end

并得到错误信息:

fish: Variables may not be used as commands. Instead, define a function like “function status; 0 $argv; end”. See the help section for the function command by typing “help function”.

消息看起来很简单,但 "defining function like..." 和 "help function" 都没有帮助解决问题。

还有一个'test'命令,听起来很有希望。但是文档说它是用来检查文件的...

如何用鱼来完成这个简单的事情 shell?

嘿...为什么所有文档都如此具有误导性?..

P.S。请不要写关于 'and' 命令的内容。

Fish 的 test 命令目前的工作方式与 POSIX 测试完全相同(即您将在 bash 或类似的 shell 中找到的命令)。它有几个操作,包括“-gt”、“-eq”、“-lt”,分别检查一个数字是否大于、等于或小于另一个数字。

所以如果你想使用测试,你会做 if test $status -eq 0(传统上 0 表示成功)。否则,您可以通过直接将命令放在 if 子句中来检查命令的 return 值,例如 if command (如果命令 returns 0 则为真) - 这就是鱼试图在这里做,这就是为什么它抱怨使用变量代替命令的原因。