开发者

How can I pass a variable/argument into this sed script that I am testing?

开发者 https://www.devze.com 2023-03-18 08:23 出处:网络
I want to be able to pass in $1 into this command that I am running, but I开发者_运维百科 think it is trying it literally as opposed to using the value of $1:

I want to be able to pass in $1 into this command that I am running, but I开发者_运维百科 think it is trying it literally as opposed to using the value of $1:

find /test/$1 -type f -name '*.html' | xargs sed -i -r 's/href="http://$1//href="//g'


Yes; single quotes prevent variable expansion. You need to use double quotes, but because you are also using them literally we need to switch quoting styles mid-stream. And I'm unclear as to how you expected slashes to work simultaneously as regex delimiters and data:

find "/test/$1" -type f -name '*.html' | xargs sed -i -r 's,href="http://'"$1"'/,href="/,g'

You will also need to watch out that $1 doesn't contain any regex special characters, and if it might contain a comma then you will probably want to use something else as the regex delimiter.

0

精彩评论

暂无评论...
验证码 换一张
取 消

关注公众号