Windows 中的命令行实用程序在输出中添加 CRLF 作为换行符号。 有谁知道如何在运行 Windows 命令行实用程序时消除反引号中的 CR?
例如:
echo "Windows"
TEST=`cmd /c "echo Win"`
echo " ${TEST} " | od -t x1
echo "CYGWIN"
TEST=`echo Win`
echo " ${TEST} " | od -t x1
输出:
Windows
0000000 20 57 69 6e 0d 20 0a
0000007
CYGWIN
0000000 20 57 69 6e 20 0a
0000006
如您所见,Windows 的 echo 反引号会输出额外的 CR 符号
您可以使用
tr
$ TEST="`cmd /c "echo Win"`"
$ echo "${TEST}" |od -t x1
0000000 57 69 6e 0d 0a
0000005
$ echo "${TEST}" | tr -d "\r" |od -t x1
0000000 57 69 6e 0a
0000004
请注意最后一个“ " 来自 cygwin echo,而不是来自 Windows CMD 输出。
$ echo -n "${TEST}" |od -t x1
0000000 57 69 6e 0d
0000004
您可以使用
d2u
(也称为 dos2unix
)cygwin 命令将行结尾从 CR LF
转换为 LF
。它可用于将文件就地转换为另一个文件,或用作管道中的过滤器。 d2u --help
提供简短的帮助。
u2d
(unix2dos) 命令以相反方向转换,LF
到 CR LF
行结尾。
如果可能 - 从 mintty 中运行脚本。
仅当脚本在 Windows CMD 终端中运行时才会添加 CR。