もがき系プログラマの日常

もがき系エンジニアの勉強したこと、日常のこと、気になっている技術、備忘録などを紹介するブログです。

base64した値をファイルに書き込む際にlinux sed unterminated `s' commandのエラーが出た対応

はじめに

こんばんは。

めっちゃかんたんな備忘録です。

とあるjsonファイルをbase64にして、その結果をとあるファイルに向けて置換したいというシェルスクリプトを書いてたのですが、どうも linux sed unterminated s' command が取れず悩んでたのですが、しょうもない結果だったので、過去の自分を戒めるために残しておきます。

本題

HASH_DATA=$(base64 ./key.json)

sed -i -e "e/KEH_HASH='';/KEY_HASH='${HASH_DATA}';/g" ./params.config

これを実行すると linux sed unterminated s' command というエラーが出てしまいました。

base64コードを普通に実行したら問題なく変換される。

base64化した結果を変数を使わずにsedで変換しようとすると問題なく成功する。

変数に入れたときだけだめ...?

とうーんうーんと必死に悩んでいたのですが。。。

結果答えとしては、 改行が入っていて変数展開時にエラーが出てた だけでした。

なので、base64コードを

HASH_DATA=$(base64 -w 0 ./key.json)

にすれば問題なく完了しました...

終わりに

久々にシェルスクリプト触ったので解決に時間かかりました。

現場からは以上です。