![]() |
1
0
对Bash脚本 是 对行尾敏感,无论是在脚本本身还是它处理的数据中。它们应该有Unix风格的行尾,即每一行都以换行字符(十进制10,ASCII中的十六进制0A)结尾。 脚本中的DOS/Windows行结尾
对于Windows或DOS样式的行尾,每行都以回车符结尾,后跟换行符。您可以在的输出中看到这个不可见的字符
在这种情况下,马车返回(
输入数据中的DOS/Windows行结束符如上所述,如果您有一个带有回车符的输入文件:
然后,在编辑器中以及在将其写入屏幕时,它将看起来完全正常,但工具可能会产生奇怪的结果。例如
附加文本将覆盖行,因为回车符会将光标移到行的开头:
字符串比较似乎会失败,即使在写入屏幕时字符串似乎相同:
解决解决方案是将文件转换为使用Unix样式的行尾。有很多方法可以实现这一点:
辛格温·巴什
对于Cygwin的Bash端口,有一个定制
设置此选项仅适用于
现在的
shell过程,以便在
采购
包含无关运输申报的文件。如果您经常遇到带有DOS行结尾的shell脚本,并且希望永久设置此选项,则可以设置一个名为
实用工具
这个
GNU版本的
这个
有用的链接维基百科有一个 excellent article 涵盖了标记一行文本结尾的多种不同方式,此类编码的历史,以及在不同操作系统、编程语言和互联网协议(如FTP)中如何处理新行。 带有经典Mac OS行结尾的文件具有 Classic Mac OS (在OS X之前),每一行都以回车符终止(十进制13,ASCII中的十六进制0D)。如果脚本文件以这样的行结尾保存,Bash只会看到一行这样的长行:
因为这条长长的线是从一只章鱼开始的(
注:2001年,苹果推出了基于BSD的Mac OS X NeXTSTEP 操作系统。因此,OS X也使用Unix风格的LF-only行结尾,从那时起,以CR结尾的文本文件变得极为罕见。尽管如此,我认为有必要展示Bash将如何解释这些文件。 |
![]() |
lonix · 使用sed从JSON中提取非贪婪正则表达式 1 年前 |
![]() |
g00dds · 如何在bash中从文件中的每一行解码base64? 2 年前 |
![]() |
Paul · Bash wait命令忽略指定的进程ID 2 年前 |
![]() |
RafaÅ G. · 如何使用从文件读取的多行参数运行ssh? 2 年前 |
![]() |
Priya · 在shell脚本中多次运行python脚本 2 年前 |