2017-02-21 75 views
0

我正在测试一个简单的程序shell(sh)。Shell sh,语法while(condition)

我正在使用while循环,但它显示一个错误。

./essai.sh:5号线:测试:参数太多

这是代码:

#!/bin/sh 

numero=1 
max=3 
while test [ $numero -le $max ] 
do 
ping -c 2 127.0.0.1 
numero=$(($numero + 1)) 
printf $numero 
sleep 5 
done 

回答

1

条件的说法是错误 变化情况从

while test [ $numero -le $max ] 

while [ $numero -le $max ] 
+1

它对空间非常敏感......我之前测试过这个解决方案,但我没注意空间。 无论如何,谢谢你,它现在的作品! –

+0

或者直接删除方括号:'while while test $ numero -le $ max' – cfromme

+1

或者使用括号将比较看起来更自然:'while((numero <= max))'.... OOPS,刚才注意到:我们在这里有Posix Shell,而不是bash。在这种情况下,这种替代方法不起作用。 – user1934428

1

测试关键字已被删除:

while [ $numero -le $max ] 

你也知道

for numero in $(seq 1 3) ; do echo $numero ; done 
3

“[]” 的意思是 “试验”,所以,你可以该行更改为

while test $numero -le $max 

while [ $numero -le $max ] 

顺便说一句:“[]”和条件表达式之间的空格是必要的。