【问题标题】:'unexpected end of file' error while using if - then - else - fi statement in Shell script在 Shell 脚本中使用 if - then - else - fi 语句时出现“文件意外结束”错误
【发布时间】:2019-11-01 07:10:49
【问题描述】:

如果文件夹中存在文件,我正在尝试读取文件。但是当我使用 if-then-else 语句来检查文件是否存在时,就会出现这个错误。 语法错误:文件意外结束

我用centos7写了脚本。我尝试了多种方法来修复此错误,例如删除方括号、添加空格和删除半列。我仍然找不到任何解决方案。

flag="0"
path="/home/abc/file.txt"
if [ -f $path ]; then
 flag="1"
 echo "file exists"
else
 echo "file could't find"
fi

如果文件存在,我希望将设置标志打印为“1”,如果文件不存在,则打印“文件找不到”。

【问题讨论】:

  • fi 后面真的有换行符吗?检查od -cx yourscript
  • 你的脚本文件有 DOS/Windows 风格的行尾吗?见:Are shell scripts sensitive to encoding and line endings?
  • @user1934428 - "0000560 d ' t f i n d " \r \n f i \r \n 2764 2074 6966 646e 0d22 660a 0d69 000a 0000577" 这是执行 od -cx file.sh 时的最后一行跨度>
  • @GordonDavisson - 谢谢,运行 sed -i 's/\r$//' file.sh 后它工作了
  • 顺便说一句,这是tag wiki 建议您在发布问题之前检查的第一件事

标签: bash shell centos7


【解决方案1】:

您的脚本运行良好。您可能有一些特殊字符。使用yum install dos2unix 或任何其他方式安装dos2unix,然后执行/usr/bin/dos2unix /path/your_script.sh。现在运行你的脚本,看看它是否有效。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2020-06-27
    • 1970-01-01
    • 2013-06-18
    • 1970-01-01
    • 2015-07-14
    • 1970-01-01
    • 2015-11-18
    相关资源
    最近更新 更多