在为 subversion 编写预提交挂钩时,我处于调用svnlook
as
MESSAGE=`svnlook cat -t $TXN $REPOS $FILE`
导致返回的值由单个连续行组成,而不是在尝试提交中更改的正确格式的文件。这是有问题的,因为源的格式对于编译很重要。知道为什么这一切都结束在一条线上吗?我错过了什么吗?
在为 subversion 编写预提交挂钩时,我处于调用svnlook
as
MESSAGE=`svnlook cat -t $TXN $REPOS $FILE`
导致返回的值由单个连续行组成,而不是在尝试提交中更改的正确格式的文件。这是有问题的,因为源的格式对于编译很重要。知道为什么这一切都结束在一条线上吗?我错过了什么吗?
格式仍然存在,但当您尝试使用未引用时会消失$MESSAGE
。Shell 将所有空格序列转换为单个空格,除非它受到引号保护。举个例子:
$ var='foo
bar'
$ echo $var
> foo bar
$ echo "$var"
> foo
> bar
在文件中的行结尾由单个 CR (0x0D) 组成的情况下,我遇到了同样的问题。它适用于 LF (0x0A) 和 CRLF (0x0D0A)。shell 命令 cat 也有同样的问题。
编辑:如果在 perl 脚本中使用,结果是一个连续的行。如果直接在 shell 命令行上使用,结果是整行垂直混合成一个短行。严格来说,这是正确的结果——没有换行,只有回车。但是没有太大的实用价值。