echo off
set /a a=0
:start
if %a% LEQ 21(
echo test
set /a a=%a%+1
goto start
)
我不明白... 我只在循环开始时出现语法错误。批次“While”循环不起作用,但为什么?
echo off
set /a a=0
:start
if %a% LEQ 21(
echo test
set /a a=%a%+1
goto start
)
我不明白... 我只在循环开始时出现语法错误。批次“While”循环不起作用,但为什么?
你缺少21
和(
这将使它在循环比较的数量21(
,也打破了if
语句之间的空间,后者是为什么你得到一个语法错误。
添加一个空格,它工作正常。
echo off
set /a a=0
:start
if %a% LEQ 21 (
echo test
set /a a=%a%+1
goto start
)
谢谢。也为我工作 – globus243
伟大,无后顾之忧:) –
您发布的代码是不是有效的bash script
它使用了这样的循环是一个batch script
到echo test
20倍的bash script
:
#/bin/bash
for i in {1..20}; do
echo test
done
更清晰,比batch scripts
可读,欢迎bash
!
打字比我快! –
对不起,改变了,我的错。打字速度比思考更快往往会导致愚蠢的错误。 – globus243
除了巴厘岛C已经解释的错误,您应该注意您的代码有潜在的问题。在此命令中:set /a a=%a%+1
的%的%值被扩展在执行命令if
只是一次。在这种情况下偶然运行你的代码,因为goto
命令导致if
在每个循环再次执行,但如果你的程序将是更大,更复杂,这组命令将被执行多次括号内,代码失败,因为%A%将扩大只是一个时间的值a
变量有之前输入括号。
在这种情况下,解决此问题的方法很简单:只需消除百分号,因为set /a a=a+1
命令可以直接采用变量的值。但是,这里涉及更多!欲知详情,请键入set /?
并注意“延迟变量扩展”的描述。
这不是BASH语法,这是微软CMD语法的混搭。 –