当当前路径包含空格时,我遇到了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//\'/}
。
关于如何解决这个问题的任何想法?
答案 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| ;
'