知识问答

Linux报 "syntax error" 异常的原因以及解决办法

当运行 shell 脚本或者执行 Linux 命令时,有时会出现"Syntax Error"或类似的错误提示。

原因:

  1. Shell 脚本或者命令中存在错误的语法或者语法不规范。比如缺少关键字、拼写错误、缺少左右括号等等。
  2. 可能是由于脚本使用了不支持的命令或参数,导致报错。

解决办法:

  1. 首先确认错误提示中显示的语法错误位置。找到具体的行号,检查该行代码是否拼写正确、是否缺失了关键字或字符等等。
  2. 确认使用的命令是否正确,是否支持所使用的参数。
  3. 使用工具帮助检查语法错误,比如使用 ShellCheck 工具,或者使用 Code Editor 进行语法高亮规范,从而避免语法错误。

示例:

#!/bin/bashfor f in $(ls /var/); do #遍历/var/目录        before=$(stat -c %x $f) #获取文件最后修改时间        echo "processing $f"        tar -cf $f.tar $f     #将文件打成压缩包        rm $f    #删除文件        after=$(stat -c %x $f.tar)  #获取压缩包最后修改时间        echo "$f was compressed at $after"   #输出压缩时间done# 当运行该脚本时,提示如下错误:# line 4: syntax error near unexpected token `done'# line 4: `done'

在该脚本中,原因是在 for 循环的最后没有添加 done,因此解决方法是在循环的最后添加 done

#!/bin/bashfor f in $(ls /var/); do #遍历/var/目录        before=$(stat -c %x $f) #获取文件最后修改时间        echo "processing $f"        tar -cf $f.tar $f     #将文件打成压缩包        rm $f    #删除文件        after=$(stat -c %x $f.tar)  #获取压缩包最后修改时间        echo "$f was compressed at $after"   #输出压缩时间done