2: [: missing ]
使用以下循环时出现错误while
:
#!/bin/sh
while ["$INPUT_STRING" != "bye"]
do
echo "please type something (bye quits) "
read INPUT_STRING
echo "you tuped : $INPUT_STRING "
done
答案1
您需要在while
的条件周围添加空格:
while [ "$INPUT_STRING" != "bye" ]
对于有编程背景的人来说这可能看起来有点奇怪,但原因如下:
while
需要命令列表。控制流取决于此命令的退出状态:只要退出状态为零,则命令主体将继续执行。[ expression ]
是 的另一种形式test expression
。这里,test
是一个命令,它计算表达式的值并以命令的退出状态的形式返回其值。如果表达式(逻辑上)计算为布尔值,则确保返回退出状态零,以便它可以在和命令true
中使用。if
while
事实上,
test
和[
都是 Linux 中的可执行文件(通常位于/usr/bin
)。但是,某些 shell(例如bash
)使用同名的内部命令。由于
test
和[
在技术上是简单命令,它们的参数应该用一个或多个白色字符与命令名称分开。