forループのループ変数エラー


10

私が好きに使っているとき

 for i in 1 2 3 4 5 

それから私のファイルは#!/bin/sh上部に含まれています。

しかし、私が使用しているとき

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

その後、それはエラーを示しています

Syntax error: Bad for loop variable

シバンを外すとちゃんと動く。その理由を教えてください。

回答:


11

for(( i = 0; i<=5; i++))Bash固有であり、プレーンなBourneシェル(/bin/sh)では機能しません。

シバンを削除すると、スクリプトは現在のシェル(おそらくBash)によって実行されるため、機能します。

と置き換え#!/bin/sh#!/bin/bash、シバンを機能させます。


shモードでそれを行う方法はありますか?ありがとう!
ジヤディンサディゴフ2014

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

1
私はすでに#bashを使用していますが、機能しません
BG Bruno

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

このタイプのループでは、Bashシェルでのみ実行されます。したがって、これを実行したい場合は、次のコマンドを試してください:

$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
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.