文件:test.sh
命令:sh test.sh
test.sh的内容
x=1
while [ $x -le 5 ]
do
echo "Welcome $x times"
x=$(( $x + 1 ))
done
错误:
test.sh:第6行:语法错误附近 意外的令牌“完成”
test.sh:第6行:“完成”
GNU bash,版本3.2.39(1)-release(x86_64-pc-linux-gnu)
答案 0 :(得分:1)
当我运行该代码时,它会起作用。
确保您使用 bash 而非 sh 运行。 $(( ))
构造相对较新。
答案 1 :(得分:1)
使用以下命令运行脚本:
bash test.sh
它会起作用。主要有两种可能性:
sh
运行时,bash
不一定会识别它作为bash
运行时识别的所有语法。但是,在我测试过的Linux和MacOS X计算机上,sh
和bash
都运行良好。/bin/sh
与bash
的shell完全不同。它是更严格的Bourne shell,您使用的符号无效 - 语法错误。答案 2 :(得分:0)
我的系统很奇怪。
Welcome 1 times
Welcome 2 times
Welcome 3 times
Welcome 4 times
Welcome 5 times
必须与空格有关。
答案 3 :(得分:0)
向分号问好。 :)
x=1
while [ $x -le 5 ]
do
echo "Welcome $x times";
x=$(( $x + 1 ));
done
如果它是一行,则不需要分号,但是,您可能希望以这种方式循环:
for i in `seq 1 5`
do
echo "Welcome $i times"
done