一尘不染

使用Bash变量构建JSON字符串

json

我需要将这些bash变量读入JSON字符串,而我对bash并不熟悉。任何帮助表示赞赏。

#!/bin/sh

BUCKET_NAME=testbucket
OBJECT_NAME=testworkflow-2.0.1.jar
TARGET_LOCATION=/opt/test/testworkflow-2.0.1.jar

JSON_STRING='{"bucketname":"$BUCKET_NAME"","objectname":"$OBJECT_NAME","targetlocation":"$TARGET_LOCATION"}'


echo $JSON_STRING

阅读 522

收藏
2020-07-27

共1个答案

一尘不染

jq如果您不提前知道变量的内容是否正确转义以包含在JSON中,则最好使用类似生成JSON 的程序。否则,您将因麻烦而最终使用无效的JSON。

BUCKET_NAME=testbucket
OBJECT_NAME=testworkflow-2.0.1.jar
TARGET_LOCATION=/opt/test/testworkflow-2.0.1.jar

JSON_STRING=$( jq -n \
                  --arg bn "$BUCKET_NAME" \
                  --arg on "$OBJECT_NAME" \
                  --arg tl "$TARGET_LOCATION" \
                  '{bucketname: $bn, objectname: $on, targetlocation: $tl}' )
2020-07-27