当我使用
for i in 1 2 3 4 5
那么我的文件包含#!/bin/sh
在顶部。
但当我使用
for(( i = 0; i<=5; i++))
然后它显示错误
Syntax error: Bad for loop variable
当我删除shebang时,它仍然正常运行。请告诉我这背后的原因。
答案1
for(( i = 0; i<=5; i++))
是 Bash 特有的,不能与普通的 Bourne shell ( /bin/sh
) 一起使用。
如果你删除shebang,脚本将由你当前的shell(可能是Bash)运行,因此它可以工作。
替换#!/bin/sh
为#!/bin/bash
,以使shebang正常工作。
答案2
我已经通过使用 ./ 而不是 sh 命令解决了这个问题。例如,如果您将sh test.sh
命令改为,./test.sh
则问题很可能就会得到解决。
答案3
for(( i = 0; i<=5; i++))
因为这种类型的循环仅在 Bash shell 上运行。因此,如果您想运行它,请尝试以下命令:
$bash filename.sh
我认为它会很好用。然后看看这个还。
答案4
尝试一下也许这可以解决你的问题
#!/bin/bash
j=0
for (( i=1; i <= 5; i++ ))
do
echo "the loop is runing $i time: and value of j is $j"
j=`expr $j + 1`
done