在运行docker容器(Ubuntu(时遇到一个奇怪的问题。我复制了一些脚本,这些脚本应该逐行读取文件并执行命令。
当我在shell中键入命令时,它会像我预期的那样工作。当我在.sh文件中有确切的命令时,它会失败。我已经尝试了While read、IFS、更改文件权限、检查空格、分隔符等的每一次迭代。似乎无法使其工作。
我确信这很简单,但我还没有找到。
我的脚本:
while read LINE;
do echo "$LINE";
done < "/megacmd/syncs"
syncs
文件内容:
$ cat syncs
sourcedir1 destdir1
sourcedir2 destdir2
sourcedir3 destdir3
运行脚本时的输出:
# pwd
/megacmd
# ls
exclude.sh excludes init.sh sync.sh sync2.sh sync3.sh sync4.sh syncs
# ./sync.sh
: No such filecannot open /megacmd/syncs
#
为什么filecannot之间没有空格?
最后,当我手动写这篇文章时,它运行良好:
# while read LINE;
> do echo "$LINE";
> done < "/megacmd/syncs"
sourcedir1 destdir1
sourcedir2 destdir2
sourcedir3 destdir3
#
第1版:
# ./sync.sh
: No such filecannot open /megacmd/syncs
# file syncs
syncs: ASCII text
#
@chepner是正确的。
我的脚本文件没有以正确的行结尾保存。Notepad++中的快速更改修复了