📌  相关文章
📜  bash:意外标记“do”附近的语法错误 - Shell-Bash (1)

📅  最后修改于: 2023-12-03 14:59:30.468000             🧑  作者: Mango

bash: syntax error near unexpected token do'` 错误介绍

这是 Shell 脚本编写时常见的错误之一。它表示在 do 附近存在语法错误,但是具体错误的位置并未被正确标记出来。

原因

这个错误常常是由于以下原因引起的:

  • do 前面的语句没有以正确的方式结束,例如没有正确的括号匹配或缺少了关键字。
  • 没有按照 Shell 语法正确使用循环语句或条件语句。
  • 函数或命令定义的语法错误。
  • 在正则表达式中有语法错误。
解决方案

首先,应该仔细检查错误提示信息所在的行以及它之前的代码段,以找出问题所在。可以通过简化代码来定位问题。

接下来,可以使用 Shell 调试工具,例如 set -xbash -x script.sh 等,来追踪脚本的执行过程,并查看问题所在。

如果问题比较复杂,还可以使用 Shellcheck 等脚本静态分析工具来帮助诊断。

示例
#!/bin/bash

for i in $( seq 1 5 )
do
echo $i
done

在执行上面的脚本时,会抛出以下错误信息:

./test.sh: line 3: syntax error near unexpected token `done'
./test.sh: line 3: `done'

这个错误提示并没有很好地解释问题的位置,因为它只能告诉我们问题发生在 done 附近。但是仔细观察代码,可以发现第 2 行的 $( seq 1 5 ) 中存在语法错误,应该改为 $(seq 1 5) 才能正确执行循环。

参考资料