我有一个包含多个网址的 html 文件。我想通过 shell 脚本动态更改 url 中的版本号

我有一个包含多个网址的 html 文件。我想通过 shell 脚本动态更改 url 中的版本号

我是 shell 脚本编写的新手。需要帮忙!!

我有一个带有多个网址的 html 文件,例如https://test.abc.net/xxx/999994236/styles/css/the-guide-styles-responsive.min.css

我想创建一个 shell 脚本,在其中可以传递一个新版本号,该版本号将替换所有此类 url 中的现有版本号(以粗体显示)。

这就是我到目前为止所做的,只获取一个网址;

#!/bin/bash

version=$1 ##Taking version as a parameter
my_str="https://test.abc.net/xxx/**999994236**/styles/css/the-guide-styles-responsive.min.css"
IFS='/' #setting slash as delimiter
read -a strarr <<<"$my_str" #reading str as an array as tokens separated by IFS
echo "Version : ${strarr[4]} "
strarr[4]=$1
echo "Version : ${strarr[4]} "
SAVE_IFS="$IFS"
IFS="/"
my_str_join="${my_str[*]}"
IFS="$SAVE_IFS"
echo "$my_str_join"

my_str_new="https://test.abc.net/xxx/**${strarr[4]}**/styles/css/the-guide-styles-responsive.min.css"
SAVE_IFS="$IFS"
IFS="/"
my_str_new_join="${my_str_new[*]}"
IFS="$SAVE_IFS"
echo "$my_str_new_join"

sed -i 's~${my_str_join}~${my_str_new_join}~g' index1.html ##This is where I am stuck. 

如果我用实际的网址代替变量${my_str_join}&${my_str_new_join},这一步工作正常,但对于变量则不然。

我已经尝试了所有方法,但无法再集思广益了。我应该如何继续这个?请帮忙!

答案1

sed 命令

sed -i 's~${my_str_join}~${my_str_new_join}~g' index1.html

使用单引号,这可以防止替换。在您想要替换的地方使用双引号,例如,

sed -i 's~${my_str_join}~'"${my_str_new_join}"'~g' index1.html

相关内容