首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >fish语句中的fish shell -eq和-a

fish语句中的fish shell -eq和-a
EN

Stack Overflow用户
提问于 2015-05-26 00:23:26
回答 2查看 7.8K关注 0票数 7

我正在阅读用于fish shell的(/usr/local/Cellar/fish/2.1.2/share/fish/completions)完成脚本,在理解语法的含义时遇到了一些问题。

在街区里,

代码语言:javascript
复制
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很陌生,我试图通过为程序编写自己的完成脚本来理解语法。我们将非常感谢您的帮助。

谢谢。

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2015-05-26 01:04:12

事实上,-eq-a并不是鱼语法的一部分。这些都是普通的争论!

代码语言:javascript
复制
if [ (count $cmd) -eq 1 -a $cmd[1] = 'git' ]

这里的方括号实际上是一个命令,如cat或grep。您确实有一个文件/bin/[。通过test命令可能更容易理解,这也是一样的:

代码语言:javascript
复制
if test (count $cmd) -eq 1 -a $cmd[1] = 'git'

现在很容易看到,-eq-a只是传递给test的普通参数,对test没有句法意义。

test有自己的小语言,比如awk或sed。有关它的信息,请参见man test

票数 9
EN

Stack Overflow用户

发布于 2015-05-26 00:29:57

来自鱼类文献

  • 如果NUM1 -eq NUM2与NUM2数值相等,则返回NUM1。
  • 如果COND1 -a COND2和COND2都为真,则返回COND1。

它测试(count $cmd) = 1$cmd[1] = 'git'

(=这里是平等,而不是赋值)。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/30447631

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档