这个shell脚本有什么问题?

时间:2013-12-27 19:32:36

标签: bash shell

我写了一个Bash脚本并且没有执行抛出“num:command not found”

    #!/bin/bash
    echo "We will print Hello World a number of times."
    num=0
    while [ $num -lt 10 ]
    do    
    echo "Hello World!"
    num = $((num + 1))
    done

由于

4 个答案:

答案 0 :(得分:6)

您需要删除第二个作业周围的空白num。请记住,var=被识别为赋值,但在变量名称和=之间有任何空格意味着它被解释为在PATH上找到的命令。

#!/bin/bash
echo "We will print Hello World a number of times."
num=0
while [ $num -lt 10 ]
do    
echo "Hello World!"
num=$((num + 1))
done

答案 1 :(得分:1)

您需要将行更改为

num=$(($num + 1))

答案 2 :(得分:1)

#!/bin/bash

num=0
while [ "$num" -lt "10" ]
do
   echo "Hello World"
   num=$((num+1))
done
echo "Finished"

答案 3 :(得分:1)

其他答案是正确的,如果您想要分配,那么您应该在=周围不使用空格。 但值得一提的是,这个脚本可以像这样重写:

#!/bin/bash
echo "We will print Hello World a number of times."
num=0
while (( num < 10 ))
do
    echo "Hello World!"
    ((num++))
done

现在阅读更加清晰。想要算术表达式?然后使用正确的语法!

好的,但是现在我们可以注意到你正在做一些与c-style for-loop非常相似的事情。这就是它的样子:

#!/bin/bash
echo "We will print Hello World a number of times."

for ((num=0; num < 10; num++))
do
    echo "Hello World!"
done

更好!