
base64を使用して更新する必要があるJSON属性があります。プロセスは次のとおりです。
prop_val=`base64 --wrap=0 < $prop_txt`
sed -i 's@"property_specific": ""@"property_specific": "'"${prop_val}"'"@g' $final_json
問題が発生しました。line 22: /bin/sed: Argument list too long
Base64文字列(1行)は非常に長いです。 sedを使用せずにどのように属性を更新できますか?
注:形式は二重引用符です。
修正する:
- 二重引用符の複雑さを排除するには、プレースホルダ固有の文字列を作成します。
- 試してみましたがうまく
sed -f
いきませんでした。
試験を終えた:
sed -i -f - $final_json << EOF; 's@placeHolder123456@'"${prop_val}"'@g'; EOF
間違い:
line 27: warning: here-document at line 23 delimited by end-of-file (wanted `EOF')
line 28: syntax error: unexpected end of file
EOF
エラーを避けるために関数に入れようとしましたが、成功しませんでした。機能:
update_prop_specific() {
sed -i -f - $1 << EOF
s@placeHolder123456@$2@g
EOF
}
提案?
答え1
最終的に別のファイルを設定し、sed -i -f ....
関数と明示的な呼び出しのために基本スクリプトからそのファイルを呼び出すと、unexpected EOF