看看这两个文件:
在我看来它们完全一样,但文件 1 有 41 个字节,文件 2 有 44 个字节。
现在,我不会关心 3 个额外的字符,但是,我认为这些字符也会导致一个奇怪的错误:当我克隆并运行这些文件时,文件 1 运行正常,而文件 2 在第 3 行返回错误:“./ BasicCheck.sh:第 3 行:cd:case0:没有这样的文件或目录”。
那么:这些额外的字符是什么?为什么它们会导致错误?我应该怎么做才能修复这些错误?
我的猜测是它们是换行符——也许文件 1 有基于 Linux 的换行符,而文件 2 有基于 Windows 的换行符。这是对的吗?为什么它会导致这样的错误?
该
file
命令指出了问题:第二个脚本是“DOS”格式。所以不会按预期工作。您可以使用它进行转换,
dos2unix
结果现在相同当您尝试将 DOS 格式文件与 Unix 命令一起使用时,每行的末尾都有一个尾随的 control-M。所以一条线如
将真正设置
a
为 b 后跟 control-M,简写^M
:每个命令都会受到类似的影响;例如,带有两个字符的命令的简单行将
ls
尝试运行ls<control-M>
不存在的三个字符的命令。