JSON文字列のBash変数の置換

JSON文字列のBash変数の置換

前のコマンドの結果に基づくフィールドを使用してBASHからJSONを生成しようとしています。

BIN=$(cat next_entry)
OUTDIR="/tmp/cpupower/${BIN}"
echo $OUTDIR
JSON="'"'{"hostname": "localhost", "outdir": "${OUTDIR}", "port": 20400, "size": 100000}'"'"
echo $JSON

上記のスクリプトが実行されると、次のものが返されます。

/tmp/cpupower/0
, port: 20400, size: 100000}': /tmp/cpupower/0

複数引用符で囲まれた文字列で変数を正しく置き換える方法は?

ベストアンサー1

JSON=\''{"hostname": "localhost", "outdir": "'"$OUTDIR"'", "port": 20400, "size": 100000}'\'

これは単一引用符の拡張を削除することです$OUTDIR。スカラー変数の割り当てには必ずしも必要ではありませんが、良い測定のためにその拡張子を二重引用符で囲みます。

$JSON変数を に渡すとecho引用符が付きます。はいただし、Split + Glob演算子を無効にする必要があります。ランダムなデータを避けるのが最善ですecho

printf '%s\n' "$JSON"

おすすめ記事