变量不能用作命令

时间:2016-02-26 19:36:12

标签: fish

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

#!/usr/bin/fish
command

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

并收到错误消息:

  

fish:变量不能用作命令。相反,定义一个像“功能状态; 0 $ argv;结束”。通过键入“help function”来查看函数命令的帮助部分。

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

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

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

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

P.S。请不要写关于'和'命令。

1 个答案:

答案 0 :(得分:6)

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

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