繁体   English   中英

这个shell脚本怎么了?

[英]What's wrong with this shell script?

我已经编写了一个Bash脚本,它没有执行抛出“ num: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

谢谢

您需要删除对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

您需要将行更改为

num=$(($num + 1))
#!/bin/bash

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

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

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

现在,阅读起来更加清晰了。 需要算术表达式吗? 然后使用正确的语法!

好的,但是现在我们可以注意到您正在执行与c样式的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

更好!

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM