Bash 引用当前路径 (pwd)

发布于 2024-08-03 14:36:00 字数 559 浏览 6 评论 0原文

我遇到了 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//\'/}

如何解决这个问题?

I have encountered a most annoying problem that occurs on the PWD variable when the current path includes a space. My code looks somewhat like this:

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

This works great, unless the current path contains a space character. If it does, $(pwd) is expanded to

'mypath/with space'

instead of just

mypath/with space

This cause the sed expression to be messed up (because of the extra quotes):

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

I have noticed that it doesn't help to expand pwd like this: ${PWD//\'/}.

How can this be solved?

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(2

心头的小情儿 2024-08-10 14:36:00

将单引号替换为双引号,并将引号替换为 pwd 周围的反引号:

mycommand | sed -E "
 s|mystuff|replacement| ;
 s|`pwd`|replacement| ;
"

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

Replace single quotes by double quotes and replace quotes with backquotes around pwd:

mycommand | sed -E "
 s|mystuff|replacement| ;
 s|`pwd`|replacement| ;
"

Double quotes allow expansion of variables and backquoted commands.

ぽ尐不点ル 2024-08-10 14:36:00

替换

'$(pwd)'

'"$(pwd)"'

它看起来像这样:

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

Replace

'$(pwd)'

with

'"$(pwd)"'

It would look like this then:

mycommand | sed -E '  
 s|mystuff|replacement| ;  
 s|'"$(pwd)"'|replacement| ;  
 '
~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文