【发布时间】:2009-09-07 19:52:29
【问题描述】:
当当前路径包含空格时,我遇到了PWD 变量上出现的最烦人的问题。我的代码看起来有点像这样:
mycommand |sed -E '
s|mystuff|replacement| ;
s|'$(pwd)'|replacement| ;
'
这很好用,除非当前路径包含空格字符。如果是,$(pwd) 将扩展为
'mypath/带空格'而不仅仅是
mypath/with space
这会导致 sed 表达式混乱(因为额外的引号):
sed: 1: "s|mypath/with": 未终止的替代模式
我注意到像这样扩展 pwd 并没有帮助:${PWD//\'/}。
关于如何解决这个问题的任何想法?
【问题讨论】:
-
这真的是命令吗?变量不会在单引号内展开,所以我根本看不到上面的 $(pwd) 会如何展开。
-
感谢您指出这一点。我已经添加了缺少的引号。
-
您是否尝试过使用等效的环境变量 ($PWD) 而不是命令替换来查看它是否有所作为?
-
正如问题中所解释的那样,是的。变量的内容是 pwd 命令返回的内容(包括单引号)。