前のコマンドの結果に基づくフィールドを使用して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"