Has*_*try 2 git shell tab-completion fish completion
我正在阅读鱼壳的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
Run Code Online (Sandbox Code Playgroud)
我明白这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' ]
Run Code Online (Sandbox Code Playgroud)
这里的开口方括号实际上是一个命令,如cat或grep.你确实有一个文件/bin/[.通过test命令可能更容易理解,这是同样的事情:
if test (count $cmd) -eq 1 -a $cmd[1] = 'git'
Run Code Online (Sandbox Code Playgroud)
现在很容易看出,-eq并且-a只是传递给普通的参数test,对鱼没有语法意义.
test有自己的小语言,如awk或sed.请参阅man test了解它.