我所遇到的,关于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| ;  
 '
许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top