“\n”在 Windows 命令行中未被正确识别
"\n" is not being recognized properly in Windows command line
由于格式限制,我正在尝试发出需要换行的命令。
我需要将文件提交到 CVS 存储库,但存储库有一个限制,要求包含以下格式的消息。
Change #: <number>
Description: <description>
用于提交文件的命令是:
cvs commit -m "Change #: <number>\nDescription: <description>" <filename>
然而,当我发出命令时,它似乎没有正确识别换行符,它没有说我给了它一个无效的更改 # 并且没有描述。
如何让它在不尝试发出两个单独的命令的情况下识别新行?
以这种格式尝试 powershell:
start-process -FilePath cvs.exe -ArgumentList "commit -m `"Change #:123 `nDescription:my description`""
我实际上是在尝试从 Perl 脚本调用此命令并找到了可接受的解决方法。由于某种原因,将该命令作为 system
命令调用似乎会失败,但如果您使用反引号调用它,它会正常工作。
# Fails
system 'cvs commit -m "Change #: <number>\nDescription: <description>" <filename>'
# Works
my $output = `cvs commit -m "Change #: <number>\nDescription: <description>" <filename>`
有趣的是,在使用 system
命令和反引号之间处理“\n”的差异似乎没有在任何地方记录。
由于格式限制,我正在尝试发出需要换行的命令。
我需要将文件提交到 CVS 存储库,但存储库有一个限制,要求包含以下格式的消息。
Change #: <number>
Description: <description>
用于提交文件的命令是:
cvs commit -m "Change #: <number>\nDescription: <description>" <filename>
然而,当我发出命令时,它似乎没有正确识别换行符,它没有说我给了它一个无效的更改 # 并且没有描述。
如何让它在不尝试发出两个单独的命令的情况下识别新行?
以这种格式尝试 powershell:
start-process -FilePath cvs.exe -ArgumentList "commit -m `"Change #:123 `nDescription:my description`""
我实际上是在尝试从 Perl 脚本调用此命令并找到了可接受的解决方法。由于某种原因,将该命令作为 system
命令调用似乎会失败,但如果您使用反引号调用它,它会正常工作。
# Fails
system 'cvs commit -m "Change #: <number>\nDescription: <description>" <filename>'
# Works
my $output = `cvs commit -m "Change #: <number>\nDescription: <description>" <filename>`
有趣的是,在使用 system
命令和反引号之间处理“\n”的差异似乎没有在任何地方记录。