Bash脚本,不能替代命令行变量

时间:2017-09-12 11:41:02

标签: 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执行此操作?

2 个答案:

答案 0 :(得分:2)

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

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

答案 1 :(得分:1)

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

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