变量不能用作命令

Maj*_*cRa 2 fish

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

#!/usr/bin/fish
command

if $status
    echo "Oops error"
else
    echo "Worked OK"
    #...
end
Run Code Online (Sandbox Code Playgroud)

并收到错误消息:

fish:变量不能用作命令.相反,定义一个像"功能状态; 0 $ argv; 结束".通过键入"help function",可以参阅功能命令的帮助部分.

该消息看起来非常简单但没有"定义函数如..."和"帮助功能"有助于解决问题.

还有一个'测试'命令,听起来很有希望.但是文档说这是用来检查文件......

如何用鱼壳做这么简单的事情?

嘿......为什么所有文件都有误导性?

PS请不要写'和'命令.

fah*_*aho 6

Fish的测试命令目前与POSIX测试完全一样(即你在bash或类似的shell中找到的那个).它有几个操作,包括"-gt"," - eq"," - lt"来检查数字是否分别大于,等于或小于另一个数字.

因此,如果你想使用测试,你会做if test $status -eq 0(传统上0表示成功).否则,您可以通过将命令直接放入if子句来检查命令的返回值if command(如果命令返回0则为true) - 这就是fish在这里尝试做的事情,这就是为什么它抱怨变量是用来代替命令.