我正在尝试执行一个简单的while循环,将变量与字符串进行比较。它无法加载此行上的错误。错误状态[:missing`]'和:找不到命令。我的while循环看起来像;
mainMenuInput = ""
while ["$mainMenuInput" != "Q" || "$mainMenuInput" != "q"]
do
答案 0 :(得分:3)
有几个错误:
mainMenuInput=""
while [ "$mainMenuInput" != "Q" ] && [ "$mainMenuInput" != "q" ]
请参阅变量声明确实需要像var=value
。否则,bash将解释您要执行var
命令并将=
和value
作为参数:
mainMenuInput=""
^
no spaces around =
在while
中,您需要在括号周围放置空格。另请注意,您需要使用&&
(和)代替||
(或),否则它将不会退出while
。
while [ "$mainMenuInput" != "Q" ] && [ "$mainMenuInput" != "q" ]
^ ^^ ^
space it has to be AND space
事实上,条件可以改写为:
while [[ "$mainMenuInput" != [qQ] ]]
答案 1 :(得分:0)
如果您使用 bash ,我认为正确的语法是:
while [ $variable -ne "q" || $variable -ne "Q" ];