1

Windows 用の bash シェルを提供する GNU for Windows で実行するシェル スクリプトを移植しようとしています。問題が発生しました:

while [ $no -le $number ]

登録されていないようです。試しに、やってみた

no=1
number=10
echo debug1
while [ $no -le $number ]
do
echo debug2
no=$((no+1))
done
echo debug3

これは debug1 と debug3 を返すため、ループに入っていないようにも見えます。

no=1
echo debug1
while [ $no -le 10 ]
do
echo debug2
no=$((no+1))
done
echo debug3

一方、これは機能し、debug1、10 個の debug2、および debug3 が得られます。

構文エラーだと思いますが、これを修正する方法がわかりません。助言がありますか?

4

1 に答える 1

1

これはbash、Linux の下で(当然のことながら)bash正常に動作し、CygWin にある比較的古いものの下でも動作します。

pax> number=10
pax> no=1 ; while [ $no -le $number ] ; do echo $no ; no=$((no+1)) ; done
1
2
3
4
5
6
7
8
9
10

while私の唯一の提案は、ループに入ろうとする前とno=$((no+1))、何か問題がある場合に備えて、次のような行の後に、2 つの変数を出力することです。

echo "[$no] [$number]"

set -xスクリプトを実行する前に、解釈された各行を出力するため、スクリプトの先頭にa を配置することもできます。

于 2013-05-30T08:06:35.653 に答える