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
了解它.
归档时间: |
|
查看次数: |
3740 次 |
最近记录: |