【发布时间】:2021-09-17 09:54:52
【问题描述】:
我正在尝试找出一种更优雅的方法来用 URL 替换文件中的一段独特文本。
sed 似乎将 URL 解释为其评估逻辑的一部分,而不是仅仅替换 bash 变量中的文本。
我的文件看起来像:
$srcRemoveSoftwareURL = "softwareURL"
我正在尝试(区分大小写)用实际 URL 搜索/替换 softwareURL。
我正在使用 bash 脚本来帮助进行操作,并且我正在设置我的变量,如下所示:
STORAGE_ENDPOINT_URL="http://mywebsite.com"
sas_url="se=2021-07-20T18%3A42Z&sp=rl&spr=https&sv=2018-11-09&sr=s&sig=oI/T9oHqzfEtuTjAotLyLN3IXbkiADGTPQllkyJlvEA%3D"
softwareURL="$STORAGE_ENDPOINT_URL/1-remove-software.sh?$sas_url"
# the resulting URL is like this:
# http://mywebsite.com/1-remove-software.sh?se=2021-07-20T18%3A42Z&sp=rl&spr=https&sv=2018-11-09&sr=s&sig=oI/T9oHqzfEtuTjAotLyLN3IXbkiADGTPQllkyJlvEA%3D
然后我使用 sed 替换文本:
sed "s|softwareURL|$softwareURL|" template_file.sh
我知道bash 优先考虑$softwareURL 变量并将其插入,但随后sed 将URL 解释为某些评估逻辑的一部分。
目前我生成的模板文件如下所示:
$srcRemoveSoftwareURL = "http://mywebsite.com/1-remove-software.sh?se=2021-07-20T18%3A42ZsoftwareURLsp=rlsoftwareURLspr=httpssoftwareURLsv=2018-11-09softwareURLsr=ssoftwareURLsig=oI/T9oHqzfEtuTjAotLyLN3IXbkiIIGTPQllkyJlvEA%3D
似乎sed 也在 URL 中找到任何与符号 & 字符并将其替换为文字 softwareURL。
我现在正在做的是将结果再次通过管道传递给sed,并将softwareURL 替换为&,这似乎有点低效。
有没有更好的方法来做到这一点?
欢迎任何指导!
谢谢!
【问题讨论】: