You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

编写的60秒错误检测Shell脚本报unexpected token fi错误求助

Shell脚本"unexpected token fi"错误修复

核心问题排查

你的脚本语法本身无明显错误,但以下两个常见问题会触发该报错:

  1. 变量c未初始化:未定义的变量可能干扰bash语法解析逻辑,引发异常。
  2. Windows风格换行符(CRLF):若脚本在Windows环境编辑后上传到Linux/Unix系统,CRLF换行符会被bash误解析为非法语法字符,导致"unexpected token fi"错误。

修复步骤

1. 初始化变量c

在脚本开头添加c=0,确保变量使用前已定义。

2. 转换换行符为Unix风格(LF)

如果是换行符问题,用以下方式修复:

  • 使用dos2unix工具转换:
    dos2unix your_script.sh
    
  • 若无dos2unix,用sed命令替换:
    sed -i 's/\r$//' your_script.sh
    

修复后的完整脚本

#!/bin/bash
a=10
b=5
p=60
c=0
while [[ $p -ne 0 ]];
do 
  t=$(date)
  if [[ $a -ne $b ]]
  then
      c=$((c+1))
  fi
  p=$((p-1))
  sleep 1
done
if [[ $c -ne 0 ]];
then
    echo "running in $t"
    c=0
fi

内容的提问来源于stack exchange,提问作者Just

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.02 18:15:36