複数のURLを含むHTMLファイルがあります。シェルスクリプトを介してURLのバージョン番号を動的に変更したいと思います。

複数のURLを含むHTMLファイルがあります。シェルスクリプトを介してURLのバージョン番号を動的に変更したいと思います。

私はシェルスクリプトに初めて触れました。助けが必要です! !

次のような複数のURLを含むHTMLファイルがあります。https://test.abc.net/xxx/999994236/styles/css/the-guide-styles-Response.min.css

これらのすべてのURLで、既存のバージョン番号(太字)を置き換える新しいバージョン番号を渡すことができるシェルスクリプトを作成したいと思います。

これが私がこれまでにしたことです。 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. 

変数を実際のURLに置き換えると${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

おすすめ記事