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
)
我不明白...我只在循环开始时收到语法错误。
您发布的代码不是有效的,在使用这样的 for 循环中bash script
它是20 次:batch script
echo test
bash script
#/bin/bash
for i in {1..20}; do
echo test
done
比它更清晰易读batch scripts
,欢迎使用bash
!
除了 Bali C 已经解释的错误之外,您应该注意您的代码存在潜在问题。在此命令set /a a=%a%+1
中: %a% 值在命令执行时仅扩展一次。if
在这种情况下,您的代码偶然运行,因为该goto
命令导致在每个循环中再次执行,但是如果您的程序更大更复杂,并且此 set 命令将在括号内if
执行多次,则代码将失败,因为 %a % 将仅扩展一次到变量在输入括号之前的值。a
在这种情况下解决这个问题的方法很简单:只需去掉百分号,因为set /a a=a+1
命令可以直接取变量的值。但是,这里涉及的内容更多!有关详细信息,请键入set /?
并注意“延迟变量扩展”说明。
您在 and 之间缺少一个空格21
,(
这将使其将循环中的数字与 进行比较21(
,也破坏了if
语句,后者是您收到语法错误的原因。
添加一个空格,它工作正常。
echo off
set /a a=0
:start
if %a% LEQ 21 (
echo test
set /a a=%a%+1
goto start
)