如何修复zsh运行脚本时出现parse error near do的报错
zsh脚本
parse error near 'do'报错解决方案 错误原因
你的代码违反了zsh的for循环语法规则:C风格for循环的声明头和do关键字之间不允许插入其他独立语句,你把export K='SOME NUMBER'放在了for声明和do中间,直接触发了解析错误。
修复方案
根据K变量的使用场景选择对应写法即可:
场景1:K为固定值,不需要循环内修改
把K的定义放到for循环外面即可,标准写法如下:
#!/usr/bin/env zsh # 全局定义固定值K export K='SOME NUMBER' for ((i = 0; i < 41; i++)); do ./A-PROGRAM *SOME FLAGS* $i *MORE FLAGS* $K 1 done
场景2:K需要每次循环动态更新
把K的定义放到do和done包裹的循环体内即可:
#!/usr/bin/env zsh for ((i = 0; i < 41; i++)); do export K='SOME NUMBER' ./A-PROGRAM *SOME FLAGS* $i *MORE FLAGS* $K 1 done
额外优化建议
- 如果你写代码习惯换行排版,也可以把
do单独放一行,语法同样合法:for ((i = 0; i < 41; i++)) do # 循环体 done - 如果K的取值包含空格、特殊符号,调用时建议写成
"$K"避免变量被意外拆分。
内容的提问来源于stack exchange,提问作者Alert
相关产品推荐
相关产品推荐

