bashのエスケープ文字 (JSON用)
2023-12-16 10:17:26
質問
私はgitを使用しており、コミットメッセージとその他のビットをJSONペイロードとしてサーバーに投稿しています。
現在、私は
MSG=`git log -n 1 --format=oneline | grep -o ' .\+'`
というようにMSGを設定します。
Calendar can't go back past today
では
curl -i -X POST \
-H 'Accept: application/text' \
-H 'Content-type: application/json' \
-d "{'payload': {'message': '$MSG'}}" \
'https://example.com'
私の本当のJSONには、もう2つほどフィールドがあります。
これは問題なく動作しますが、もちろん、上記のようなアポストロフィを含むコミットメッセージがある場合、JSONは無効となります。
bash で必要な文字をどのようにエスケープすればよいのでしょうか。この言語には詳しくないので、どこから始めればよいのかわかりません。置き換える
'
を
\'
であれば、最低限の仕事はできるのではないでしょうか。
どのように解決するのですか?
OK、どうすればいいかわかりました。Bash は予想通りこれをネイティブにサポートしていますが、いつものように構文はあまり推測できません!
本質的には
${string//substring/replacement}
はイメージどおりのものを返すので
MSG=${MSG//\'/\\\'}
これを行うには 次の問題は、最初の正規表現が機能しなくなったことですが、これは次のように置き換えることができます。
git log -n 1 --pretty=format:'%s'
結局、エスケープする必要すらありませんでした。その代わり、JSONの「'」を全て「˶‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾」に入れ替えただけです。いやー、毎日勉強になりますね。
関連
-
[解決済み] 正しいJSONコンテンツタイプは何ですか?
-
[解決済み] JSONでコメントを使用することはできますか?
-
[解決済み] Bashスクリプトのソースディレクトリをスクリプト自体から取得するにはどうすればよいですか?
-
[解決済み] なぜGoogleはJSONレスポンスにwhile(1);を前置するのでしょうか?
-
[解決済み] Bashシェルスクリプトでディレクトリが存在するかどうかを確認するにはどうすればよいですか?
-
[解決済み] Bashで通常のファイルが存在しないかどうかを判断する方法を教えてください。
-
[解決済み] Bashで文字列変数を連結する方法
-
[解決済み] Bash prints リテラルの改行をエコーする \n
-
[解決済み] JavaScriptでJSONをきれいに印刷する
-
[解決済み] Bashスクリプトからプログラムが存在するかどうかを確認するにはどうすればよいですか?
最新
-
nginxです。[emerg] 0.0.0.0:80 への bind() に失敗しました (98: アドレスは既に使用中です)
-
htmlページでギリシャ文字を使うには
-
ピュアhtml+cssでの要素読み込み効果
-
純粋なhtml + cssで五輪を実現するサンプルコード
-
ナビゲーションバー・ドロップダウンメニューのHTML+CSSサンプルコード
-
タイピング効果を実現するピュアhtml+css
-
htmlの選択ボックスのプレースホルダー作成に関する質問
-
html css3 伸縮しない 画像表示効果
-
トップナビゲーションバーメニュー作成用HTML+CSS
-
html+css 実装 サイバーパンク風ボタン
おすすめ
-
[解決済み] コマンドラインを使用してJSONオブジェクトの項目をカウントする方法は?
-
[解決済み] BeautifulSoupでJSONオブジェクトから特定の値をパースする
-
[解決済み] RESTful WebServiceにファイルや関連データをJSONで投稿する。
-
[解決済み] node.jsでJSONをpretty-printするにはどうしたらいいですか?
-
[解決済み] JSONのXSLT対応
-
[解決済み] Node.js プロジェクトの package.json ファイルを自動的にビルドする方法はありますか?
-
[解決済み] Node.jsでJSONオブジェクトの内容をログに記録する方法は?
-
[解決済み] fs.writeFileSyncによるJSONオブジェクトのJSONファイルへの書き込み
-
[解決済み] GoでJSONを部分的にマップにアンマーシャルする
-
[解決済み] Goマップをjsonに変換する