所以我正在编写一个bash shell脚本,我的前几行看起来像这样:
if (intChoice = true)
但是当我运行它时,它会说“[:missing`]'”。我没有看到失踪,除了;正在触动],所以我错过了什么?
答案 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
在您使用 ||
进行检查的地方应该与它的前一行代码有一个换行符。