bash脚本中的[:missing`]'

时间:2016-02-09 00:18:22

标签: bash sh brackets

所以我正在编写一个bash shell脚本,我的前几行看起来像这样:

if (intChoice = true)

但是当我运行它时,它会说“[:missing`]'”。我没有看到失踪,除了;正在触动],所以我错过了什么?

2 个答案:

答案 0 :(得分:9)

您不能在单括号测试表达式中使用||之类的运算符。你必须要么

! [[ $# -eq 0 || $# -eq 1 ]]

! { [ $# -eq 0 ] || [ $# -eq 1 ]; }

! [ $# -eq 0 -o $# -eq 1 ]

double-brace关键字是一个bash表达式,不能与其他POSIX shell一起使用,但它也有一些好处,比如能够更可读地执行这些操作。

当然,有很多方法可以测试传递的参数数量。 $2的存在也会回答你的问题。

答案 1 :(得分:0)

在某些情况下,即使上面提到的@kojiro 一切正常,也会发生此错误。在这种情况下,简单而适当的换行会有所帮助。 if-statement 在您使用 || 进行检查的地方应该与它的前一行代码有一个换行符。