运行嵌套双括号for循环Bash脚本时出现unexpected token '(('语法错误
解决Bash脚本的
syntax error near unexpected token '(('错误 我帮你拆解下这个脚本的问题,主要有两处细节没处理好:
1. for循环与do之间缺少分隔符
Bash的for ((...))语法有严格的格式要求:循环条件结束后,必须用分号或者换行来分隔后面的do。你的内层for循环直接写成for ((j=1; j<=5; j++)) do,中间没有分隔符,这就触发了语法报错。
2. echo的选项用了中文符号
你脚本里的echo –n用的是中文破折号–,而非英文短横线-,这会让echo把–n当成普通字符串输出,没法实现“不换行”的效果。
修正后的完整脚本
for ((i=1; i<=5; i++)); do for ((j=1; j<=5; j++)); do echo -n "$i" done echo " " done
逐点说明修改:
- 给每个
for ((...))后面加上了分号;,你也可以把do单独放在下一行,效果完全一致; - 把中文破折号替换成英文短横线,让
echo -n的“不换行”功能正常生效; - 给变量
$i套上双引号,这是Bash脚本的通用好习惯,能避免特殊字符带来的意外问题。
直接运行修正后的脚本,就能正常输出5行、每行5个对应数字的结果了。
内容的提问来源于stack exchange,提问作者latest tech
相关产品推荐
相关产品推荐

