WHILE DO READ无法打开指向的文件,即使它存在



在运行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++中的快速更改修复了

相关内容

  • 没有找到相关文章

最新更新