Shell脚本报syntax error near unexpected token `fi`错误如何解决?
Shell脚本
syntax error near unexpected token 'fi'错误修复方案 核心问题排查
- 中括号语法错误:最内层判断语句
if ["$incValue" == "1"]; then中,[是Shell的内置命令,后面必须加空格,结束符]的前面也必须加空格,否则会被解析为非法字符串,导致后续fi配对失败。 - 比较符兼容性问题:POSIX标准的
[判断结构中,字符串相等判断应使用=,==仅为Bash等Shell的扩展语法,若你用sh执行脚本会触发语法错误。 - if-else分支配对错位:你的脚本缩进混乱,第二层
if [ -f "$file1" ]对应的else分支错误地写在了第三层if [ -f "$file2" ]的结束fi之后,导致解析器无法正确识别fi对应的if分支,直接抛出意外fi的报错。 - 额外潜在问题:代码中的
break语句仅能在for/while循环中使用,若这段脚本没有放在循环结构内,修复语法问题后执行依然会报错。
修复后代码
if [ "$var1" = "$var2" ]; then if [ -f "$file1" ]; then echo "file1 exists" if [ -f "$file2" ]; then echo "file2 exists" if [ "$incValue" = "1" ]; then # 注意:仅当这段代码处于循环内时break才合法 break fi fi else echo "files are not present" sleep 300 fi else echo "files are present" fi
内容的提问来源于stack exchange,提问作者Aviator
相关产品推荐
相关产品推荐

