【发布时间】: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 建议您在发布问题之前检查的第一件事。