Linux Shell命令中不需要的换行符(来自VIM)

Linux Shell命令中不需要的换行符(来自VIM),linux,bash,vim,Linux,Bash,Vim,我正在尝试使用“exe”在VIM中运行shell命令。我有一个包含系统调用结果的变量(路径名) 我想在另一个shell命令中使用变量tempName: exe '! cat '.tempName.' >> anotherFile' 因此,我们应该运行的是: cat /path/to/file/tempFile.do >> anotherFile 但由于某种原因,“>>另一个文件”部分被切断,只有 cat /path/to/file/tempFile.do 他正在跑步

我正在尝试使用“exe”在VIM中运行shell命令。我有一个包含系统调用结果的变量(路径名)

我想在另一个shell命令中使用变量tempName:

exe '! cat '.tempName.' >> anotherFile'
因此,我们应该运行的是:

cat /path/to/file/tempFile.do >> anotherFile
但由于某种原因,“>>另一个文件”部分被切断,只有

cat /path/to/file/tempFile.do

他正在跑步。我尝试转义“>>”字符和“.”,但无效。有什么想法吗

这对我很有用。注意
cat

:exe '! cat '.tempName.' >> anotherFile'

当你逐字输入时,它能工作吗

:execute '!cat /path/to/file/tempFile.do >> anotherFile'
如果是这样,那么问题是
system()
捕获了包括换行符在内的输出

一种解决方案是使用
substitute()
剥离最后的换行符:


谢谢,这基本上就是我一直在尝试的(缺少的空格是一个打字错误)。问题是Bash将文件隐藏到屏幕上,而不是将其附加到“anotherFile”。“>>anotherFile”部分甚至没有出现在Bash中。标题中的换行是因为如果你在VIM中回显命令,它会在>>处将其分为两行,我认为这可能是导致问题的原因。是的,如果逐字输入,效果很好,替换效果很好。我应该想到这一点。谢谢
:execute '!cat /path/to/file/tempFile.do >> anotherFile'
:execute '!cat '.substitute(tempName, '\n$', '', '').' >> anotherFile'