echo off
set /a a=0
:start
if %a% LEQ 21(
echo test
set /a a=%a%+1
goto start
)
わかりません...ループの開始時に構文エラーが発生するだけです。
echo off
set /a a=0
:start
if %a% LEQ 21(
echo test
set /a a=%a%+1
goto start
)
わかりません...ループの開始時に構文エラーが発生するだけです。
投稿したコードは有効bash scriptではありません。次のようなforループを使用するbatch scriptとecho test20回になります。bash script
#/bin/bash
for i in {1..20}; do
echo test
done
よりもはるかに明確で読みやすいbatch scripts、ようこそbash!
バリCによってすでに説明されているエラーに加えて、コードに潜在的な問題があることに注意する必要があります。このコマンドset /a a=%a%+1の場合:%a%値は、コマンドの実行時に1回だけ展開されます。ifこの場合、gotoコマンドによってif各ループで再度実行されるため、コードが偶然に実行されますが、プログラムがより大きく複雑になり、このsetコマンドが括弧内で数回実行されると、%aが原因でコードが失敗します。 %は、括弧を入力する前aに変数が持っていた値に1回だけ展開されます。
この場合、この問題を解決する方法は簡単set /a a=a+1です。コマンドは変数の値を直接取得できるため、パーセント記号を削除するだけです。ただし、ここにはもっと多くのことが関係しています!詳細については、set /?「遅延変数展開」の説明を入力して注意してください。
21との間のスペースが欠落して(いるため、ループ内の数値をと比較し21(、ステートメントを壊しifます。後者が構文エラーを受け取る理由です。
スペースを追加すると、正常に機能します。
echo off
set /a a=0
:start
if %a% LEQ 21 (
echo test
set /a a=%a%+1
goto start
)