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

运行ksh脚本时如何解决'if'不匹配错误?

问题解决:Shell脚本出现'if'不匹配及': not found'错误

问题原因

你的脚本存在两个核心问题:

  1. 缺少解释器声明(shebang行):Linux无法确定用哪种shell执行脚本,若默认用sh,它不支持[[ ]]这种扩展语法,直接导致if语句报错。
  2. 换行符格式错误:脚本在Windows环境下编辑,使用了CRLF(\r\n)换行,而Linux仅识别LF(\n)换行。每行末尾的\r会被bash当成命令的一部分,系统找不到带\r的命令,因此出现: not found错误,同时破坏if语句的语法结构,引发不匹配问题。

修复步骤

  1. 添加shebang行:在脚本最开头添加一行,指定用bash解释器执行:
#!/bin/bash
echo "The number of arguments passed "
echo $#;
echo "The passed arguments are "
echo $@

count="$#"

echo "Count is "
echo $count;

if [[ $count -eq "2" ]]; then
   echo "Correct";
else
   echo "Incorrect";
fi
  1. 转换换行符为Linux格式:

    • 若系统安装了dos2unix工具,执行:
      dos2unix MyScript
      
    • 若无dos2unix,用sed命令去除每行末尾的\r:
      sed -i 's/\r$//' MyScript
      
  2. 确保脚本有执行权限:

    chmod +x MyScript
    
  3. 重新运行脚本:

    ./MyScript "ABC" "XYZ"
    

执行后会正常输出:

The number of arguments passed 
2
The passed arguments are 
ABC XYZ
Count is 
2
Correct

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.01 05:00:31