shell脚本未按预期次数执行循环提前终止问题排查求助
问题根因
从你给出的日志样例里Test {1..4}的输出可以直接定位问题:你脚本里的{1..4}大括号范围扩展没有生效,循环把{1..4}当成了单个字符串执行,所以只会运行1次就退出。
该问题的核心触发原因是你用了sh命令执行脚本:
{1..N}是Bash特有的扩展语法,POSIX标准的sh不支持该特性- 即使你脚本首行写了
#!/bin/bash,如果执行时手动用sh scriptname.sh启动,也会强制用sh解释器运行,忽略脚本指定的shebang
修复方案
- 改用bash执行脚本:
bash scriptname.sh - 或者给脚本添加执行权限后直接运行,会自动调用shebang指定的bash解释器:
chmod +x scriptname.sh ./scriptname.sh - 如果你需要兼容sh环境,可以把循环改成POSIX兼容的写法,替换原来的for循环即可:
for i in $(seq 1 4) do # 原有循环内逻辑保持不变 done
内容的提问来源于stack exchange,提问作者mcv110
相关产品推荐
相关产品推荐

