|
-1
|
| kittygirl · 技术社区 · 7 年前 |
|
|
1
3
对。Bash脚本 是 无论是在脚本本身还是它处理的数据中,都对行尾敏感。它们应该有Unix风格的行尾,即每行以换行符(十进制10,ASCII中的十六进制0A)结束。
对于Windows或DOS样式的行结束符,每行都以回车符和换行符结束。您可以在的输出中看到这个不可见的字符
在这种情况下,回车(
DOS/Windows输入数据中的行尾如上所述,如果您有一个带有回车符的输入文件:
然后,在编辑器和将其写入屏幕时,它看起来完全正常,但工具可能会产生奇怪的结果。例如,
追加的文本将覆盖行,因为回车会将光标移到行的开头:
解决方案是将文件转换为使用Unix样式的行尾。有许多方法可以实现这一点:
赛文·巴什
对于Cygwin的Bash端口,有一个自定义
设置此选项仅适用于
现在的
采购
实用工具
GNU版本的
这个
有用的链接excellent article 涵盖了许多不同的方式来标记一行文字的结尾,这种编码的历史,以及新行是如何在不同的操作系统,编程语言和互联网协议(如FTP)处理。 具有经典Mac OS行尾的文件Classic Mac OS (在OS X之前),每行都以回车结束(十进制13,ASCII中的十六进制0D)。如果脚本文件以这样的行结尾保存,Bash将只看到一行长的行,如下所示:
因为这条长长的线是从一只章鱼开始的(
注:2001年,苹果推出了基于BSD衍生的MacOSX NeXTSTEP 操作系统。因此,osx也使用Unix风格的LF-only行尾,从那时起,以CR结尾的文本文件变得极为罕见。不过,我认为有必要展示Bash如何尝试解释这些文件。 |
|
|
2
2
|
|
|
3
1
如果问题是你的文件
您应该首先修复导致这些文件名称损坏的原因(可能是创建这些文件的脚本)
这个
|
|
|
4
0
如果你用的是
在bash(或zsh或ksh)中,这意味着您将替换以下标准习惯用法:
有了这个:
(注:以下为
如果你不使用
有了这个:
|
|
|
5
0
摆脱不需要的CR('\r')字符的另一种方法是运行
|
|
|
6
0
我正试图从Windows启动docker容器,结果是:
https://forums.docker.com/t/error-while-running-docker-code-in-powershell/34059/6 在那之前,我试过这个,但没用:
|