【问题标题】:What's wrong with this if elif statement这个 if elif 语句有什么问题
【发布时间】:2014-03-20 12:11:20
【问题描述】:
 if [[ (thing1 -eq 0) && (thing -eq 0) && (thing3 -eq 0) && (thing4 -eq 0) ]]; then
      echo "no flags"
 elif [[ (thing1 -eq 1) && (thing -eq 0) && (thing3 -eq 0) && (thing4 -eq 0) ]]; then
      echo "-g flag"
 elif [[ (thing1 -eq 0) && (thing -eq 1) && (thing3 -eq 0) && (thing4 -eq 0) ]]; then
      echo "-p flag"
 fi

有什么想法吗?给我错误,我不知道为什么。

【问题讨论】:

  • thing1 永远不会等于零。如果要比较存储在 thing1 中的值,请使用“$thing1”。
  • 请告诉我们您遇到的错误。这总是很重要的。发生错误是有原因的。我猜thing1是一个变量?我认为应该像 [[ ($thing1 -eq) ... 和其他人一样
  • 您是否尝试解析运行脚本时使用的标志/选项?如果是这样,请考虑改用getopts - wiki.bash-hackers.org/howto/getopts_tutorial

标签: bash if-statement syntax


【解决方案1】:

这里不需要方括号,所以使用:

[[ $thing1 -eq 0 && $thing -eq 0 && $thing3 -eq 0 && $thing4 -eq 0 ]];

您也可能打算使用变量而不是常量字符串,例如 thing、thing1 等。

【讨论】:

  • 太好了,我会尽快将其标记为答案。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2014-05-08
  • 1970-01-01
  • 2011-05-23
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多