题
我所遇到的,关于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//\'/}
这是如何可以解决任何想法?
解决方案
替换由双引号单引号和替换周围PWD反引号引号:
mycommand | sed -E "
s|mystuff|replacement| ;
s|`pwd`|replacement| ;
"
双引号允许的变量扩展和反引号命令。
其他提示
如果您更换发生什么
'$(pwd)'
与
'"$(pwd)"'
是这样的,则:
mycommand | sed -E '
s|mystuff|replacement| ;
s|'"$(pwd)"'|replacement| ;
'
不隶属于 StackOverflow