我有perl脚本在windows中工作正常。但是当我尝试在Mac OS X中运行它时,它不执行完整任务。谁能解释LF + CR?为什么这些行结尾在Unix上不起作用? &安培;在那种情况下,如果我想在Linux / Unix中运行它,如何处理为windows编写的perl脚本?
答案 0 :(得分:1)
假设您有一个包含以下字节的文件:
61 62 63 0D 0A 64 65 66 0D 0A
通过Windows定义文本文件,该文件包含两行61 62 63
和64 65 66
以及行终止符。
通过unix对文本文件(包括Mac)的定义,该文件包含两行61 62 63 0D
和64 65 66 0D
以及行终止符。
由于线条不同,当然它们的工作方式不同。
如果您使用的是unix系统,并且需要两行61 62 63
和64 65 66
以及行终止符,则该文件需要包含以下字节:
61 62 63 0A 64 65 66 0A
您可以使用dos2unix
将Windows文本文件翻译成unix文本文件。
答案 1 :(得分:1)
您可以使用perl将Windows行结尾(\ r \ n)更改为换行符(\ n):
perl -pi -e 's/\r\n?/\n/g' your-script.pl
通过使换行符可选,这也可以将传统的mac行结尾(\ r)转换为换行符。你可以把它变成别名:
alias fixlines="perl -pi -e 's/\r\n?/\n/g'"