echo off
set /a a=0
:start
if %a% LEQ 21(
echo test
set /a a=%a%+1
goto start
)
我不明白...... 我只在循环开始时收到语法错误。
答案 0 :(得分:3)
您发布的代码不是有效的bash script
batch script
到echo test
使用for循环bash script
20次:
#/bin/bash
for i in {1..20}; do
echo test
done
比batch scripts
更清晰,更易读,欢迎来到bash
!
答案 1 :(得分:2)
除了Bali C已经解释的错误之外,您应该注意您的代码存在潜在问题。在此命令中:set /a a=%a%+1
执行if
命令时,%a%值仅展开一次。在这种情况下,您的代码偶然运行,因为goto
命令导致if
在每个循环中再次执行,但是如果您的程序会更大更复杂,并且此set命令将被执行多次在括号内,代码会失败,因为%a%只会被扩展一次a
变量在输入括号之前的值
在这种情况下,解决此问题的方法很简单:只需消除百分号,因为set /a a=a+1
命令可以直接获取变量的值。但是,这里涉及的更多!有关更多详细信息,请键入set /?
并注意“延迟变量扩展”说明。
答案 2 :(得分:1)
您错过21
和(
之间的空格,这会使循环中的数字与21(
进行比较,同时打破if
声明,后者为为什么你会遇到语法错误。
添加空格,效果很好。
echo off
set /a a=0
:start
if %a% LEQ 21 (
echo test
set /a a=%a%+1
goto start
)