我有一个包含URL的文件,我希望用新的URL替换此URL。这个URL每次都可能不同,所以我不想用YYY代替XXX,而是想更改包含URL的变量的值。
文件如下:
APP_URL=https://test.hello.co/
我希望将APP_URL的值更改为其他URL,但没有成功
我正在使用bash脚本来实现这一点。
尝试在我的脚本中使用它,但没有成功。
oldline='APP_URL=https://test.hello.co'
newline='APP_URL=https://${variable}'
sudo sed -i 's/${oldline}/${newline}/g' .env
我很想在这里得到帮助!
谢谢:(
您需要删除sed中的'
并转义所有/
,这样它就不会认为您正在结束s
的部分(或使用其他符号(这两项工作(我的文件名是.test
(:
variable=aaaaaaaaaaaaaaaaaaaaaaaaa
oldline='APP_URL=S+'
newline='APP_URL=https://'$variable
sed -r s/${oldline}/${newline}/g .test
oldline='APP_URL=S+'
newline='APP_URL=https://'$variable
sed -r s-${oldline}-${newline}-g .test
单引号可防止变量插值。
您通常可以使用双引号。
$: cat tst
oldurl=test.hello.co
newurl=foo.bar.com
sed "s,APP_URL=https://${oldurl}/,APP_URL=https://${newurl}/,g" file
$: cat file
APP_URL=https://test.hello.co/
$: ./tst
APP_URL=https://foo.bar.com/
编辑
是的,这可以简化很多,比如通过传递新的url。
$: grep . tst file
tst:sed -E "s,APP_URL=https://[^/]+/,APP_URL=https://$1/,g" file
file:APP_URL=https://test.hello.co/
$: ./tst a.b.c
APP_URL=https://a.b.c/