变量不能用作命令
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 则为真) - 这就是鱼试图在这里做,这就是为什么它抱怨使用变量代替命令的原因。
使用 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 则为真) - 这就是鱼试图在这里做,这就是为什么它抱怨使用变量代替命令的原因。