for循环中的循环变量错误


10

当我使用像

 for i in 1 2 3 4 5 

然后我的文件包含#!/bin/sh在顶部。

但是当我使用

for(( i = 0; i<=5; i++))

然后显示错误

Syntax error: Bad for loop variable

卸下shebang并正常运行。请告诉我这背后的原因。

Answers:


11

for(( i = 0; i<=5; i++))是Bash专用的,不适用于普通的Bourne shell(/bin/sh)。

如果删除shebang,脚本将由当前的shell(可能是Bash)运行,因此可以运行。

替换#!/bin/sh#!/bin/bash以使Shebang正常工作。


有什么办法可以在sh模式下进行吗?谢谢!
Ziyaddin Sadigov 2014年

2
i=0; while [ $i -le 5 ]; do echo $i; i=$((i+1)); done
Florian Diesch 2014年

1
我已经使用#bash了,但无法使用
BG Bruno

2
for(( i = 0; i<=5; i++))

这种类型的循环仅在Bash shell上运行。因此,如果要运行此命令,请尝试以下命令:

$bash filename.sh

我认为它将正常运行。并看到这个


1

我已经通过使用./代替sh命令解决了这个问题。举个例子,如果您把sh test.sh命令改为:./test.sh并且很可能会解决问题。


0

试试看可能是这样可以解决您的问题

#!/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
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.