代码之家  ›  专栏  ›  技术社区  ›  user2820954

Shell命令中不需要的换行符(来自VIM)[已关闭]

  •  0
  • user2820954  · 技术社区  · 12 年前

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

    tempName=system('run.sh') "tempname is actually equal to "/path/to/file/tempfile.do" 
    

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

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

    因此,应该运行的是:

    cat /path/to/file/tempFile.do >> anotherFile
    

    但由于某种原因,“>>另一个文件”部分被切断

    cat /path/to/file/tempFile.do
    

    正在运行。我试图转义“>>”字符和“.”,但都不起作用。有什么想法吗?

    2 回复  |  直到 12 年前
        1
  •  1
  •   glts    12 年前

    当你按字面意思打字时,它有效吗?

    :execute '!cat /path/to/file/tempFile.do >> anotherFile'
    

    如果是这样,那么问题是 system() 捕获包括换行符在内的输出。

    一种解决方案是使用 substitute() :

    :execute '!cat '.substitute(tempName, '\n$', '', '').' >> anotherFile'
    
        2
  •  1
  •   Jean    12 年前

    这对我有用。注意后面的空格 cat

    :exe '! cat '.tempName.' >> anotherFile'
    
    推荐文章