我写了一个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
由于
答案 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
更好!