[英]fish shell -eq and -a in if statement
我正在阅读鱼壳的git.fish完成脚本(/usr/local/Cellar/fish/2.1.2/share/fish/completions),我在理解语法的含义时遇到了一些问题。
在街区,
function __fish_git_needs_command
set cmd (commandline -opc)
if [ (count $cmd) -eq 1 -a $cmd[1] = 'git' ]
return 0
end
return 1
end
我知道cmd
被设置为commandline -opc
。 但是在下一个语句中(count $cmd) -eq 1 -a $cmd[1] = 'git'
,- -eq
和-a
是什么意思?
我是fish shell的新手,我试图通过尝试为程序编写自己的完成脚本来理解语法。 非常感谢帮助。
谢谢。
实际上-eq
和-a
不是鱼语法的一部分。 他们是普通的论点!
if [ (count $cmd) -eq 1 -a $cmd[1] = 'git' ]
这里的开口方括号实际上是一个命令,如cat或grep。 你确实有一个文件/bin/[
。 通过test
命令可能更容易理解,这是同样的事情:
if test (count $cmd) -eq 1 -a $cmd[1] = 'git'
现在很容易看出-eq
和-a
只是传递给test
普通参数,对于鱼没有语法意义。
test
有自己的小语言,如awk或sed。 请参阅man test
以了解它。
来自Fish文档 :
- 如果NUM1和NUM2在数值上相等,则NUM1 -eq NUM2返回true。
- 如果COND1和COND2都为真,则COND1 -a COND2返回true。
它测试(count $cmd) = 1
和$cmd[1] = 'git'
。
( =
这里是平等,而不是任务)。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.