Bash引用当前路径(pwd)

时间:2009-09-07 09:35:18

标签: bash variable-expansion

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

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

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

'mypath/with space'
而不仅仅是     
mypath/with space

这会导致sed表达式混乱(因为有额外的引号):

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

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

关于如何解决这个问题的任何想法?

2 个答案:

答案 0 :(得分:2)

用双引号替换单引号,并用pwd:

周围的反引号替换引号
mycommand | sed -E "
 s|mystuff|replacement| ;
 s|`pwd`|replacement| ;
"

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

答案 1 :(得分:1)

如果替换

会发生什么
'$(pwd)'

'"$(pwd)"'

看起来像这样:

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