特定の文字列を検索し、ファイル内のすべての出現箇所を置換しようとしています。
sed -i -e "s/$search_string/$replace_string/g" $filePath
BusyBox v1.35.0 でエラーが発生し続けますsed: unmatched '/'
。ただし、ローカル システムでは同じことが正常に動作します。
そしていいえ、 も $search_string
にも は が$replace_string
含まれていません/
。念のため、あらゆる種類の区切り文字も試してみました。
答え1
この問題は、$replace_stringがスペースと改行を含むbase64エンコードされた文字列であったために発生していました。
replace_string=$(echo -n $json_string | base64)
上記のコマンドを次のように変更します
json_string=$(echo -n $json_string | base64 -w 0)
私にとっては解決しました
-w, --wrap=COLS エンコードされた行を COLS 文字の後に折り返します (デフォルトは 76)。行の折り返しを無効にするには 0 を使用します。