Json Bash脚本,无法替换命令行变量

Json Bash脚本,无法替换命令行变量,json,bash,Json,Bash,这是一个小的命令行脚本,用于在http服务器中发布json正文。我发现很难将第一个命令行参数$1传递给json主体 #!/bin/bash curl -X POST -d '{ "game": 16, "id": $(($1)) }' http://localhost:10000/ 该命令不会失败,但是http正文包含 {“游戏”:16,id:$($1))} 我想运行脚本。/script 123并发送json正文 { "game": 16, "id": 3 } 如何使用bash实现这一

这是一个小的命令行脚本,用于在http服务器中发布json正文。我发现很难将第一个命令行参数$1传递给json主体

#!/bin/bash
curl  -X POST -d '{  "game": 16, "id": $(($1)) }' http://localhost:10000/
该命令不会失败,但是http正文包含

{“游戏”:16,id:$($1))}

我想运行脚本。/script 123并发送json正文

{  "game": 16, "id": 3 }

如何使用bash实现这一点?

使用单引号将打印文字字符。字符串插值需要使用双引号。尝试:

curl  -X POST -d "{  \"game\": 16, \"id\": $1 }" http://localhost:10000/

使用单引号将打印文字字符。字符串插值需要使用双引号。尝试:

curl  -X POST -d "{  \"game\": 16, \"id\": $1 }" http://localhost:10000/

您也可以使用单引号,这样就不必像这样转义双引号:

#!/bin/bash
curl  -X POST -d '{  "game": 16, "id": '$1' }' http://localhost:10000/

您也可以使用单引号,这样就不必像这样转义双引号:

#!/bin/bash
curl  -X POST -d '{  "game": 16, "id": '$1' }' http://localhost:10000/

是的,一切都需要。它实际上是一个数字,例如12345,所以我需要所有字符。一般来说,您不应该使用字符串插值创建JSON,因为
$1
的内容可能需要正确转义才能生成有效的JSON。类似于
$(jq--arg val“$1”{game:16,id:$val}')
更合适。是的,一切都是必需的。它实际上是一个数字,例如12345,所以我需要所有字符。一般来说,您不应该使用字符串插值创建JSON,因为
$1
的内容可能需要正确转义才能生成有效的JSON。类似于
$(jq--arg val“$1”{game:16,id:$val}')
更合适。