Json Bash脚本,无法替换命令行变量
这是一个小的命令行脚本,用于在http服务器中发布json正文。我发现很难将第一个命令行参数$1传递给json主体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实现这一
#!/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}')
更合适。