我正在阅读用于fish shell的(/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很陌生,我试图通过为程序编写自己的完成脚本来理解语法。我们将非常感谢您的帮助。
谢谢。
发布于 2015-05-26 01:04:12
事实上,-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没有句法意义。
test有自己的小语言,比如awk或sed。有关它的信息,请参见man test。
发布于 2015-05-26 00:29:57
来自鱼类文献:
它测试(count $cmd) = 1和$cmd[1] = 'git'。
(=这里是平等,而不是赋值)。
https://stackoverflow.com/questions/30447631
复制相似问题