代码之家  ›  专栏  ›  技术社区  ›  Ludvig A. Norin

当前路径的Bash引用(pwd)

  •  3
  • Ludvig A. Norin  · 技术社区  · 16 年前

    我遇到了一个最烦人的问题,它发生在 PWD 当前路径包含空间时的变量。我的代码看起来有点像这样:

    mycommand |sed -E '  
     s|mystuff|replacement| ;  
     s|'$(pwd)'|replacement| ;  
     '
    

    这非常有效,除非当前路径包含空格字符。如果是的话, $(pwd) 扩展到

    'mypath/with space'

    mypath/with space

    sed: 1: "s|mypath/with": unterminated substitute pattern

    我注意到,像这样扩展pwd是没有帮助的: ${PWD//\'/} .

    2 回复  |  直到 16 年前
        1
  •  4
  •   mouviciel    16 年前

    将单引号替换为双引号,并将pwd周围的引号替换为反引号:

    mycommand | sed -E "
     s|mystuff|replacement| ;
     s|`pwd`|replacement| ;
    "
    

    双引号允许展开变量和反引号命令。

        2
  •  1
  •   mouviciel    16 年前

    '$(pwd)'
    

    具有

    '"$(pwd)"'
    

    那么看起来是这样的:

    mycommand | sed -E '  
     s|mystuff|replacement| ;  
     s|'"$(pwd)"'|replacement| ;  
     '
    
    推荐文章