Bash Script_将读取命令的变量读入命令

时间:2015-03-13 15:42:11

标签: linux bash curl sh

我正在使用BLS API开展项目 参考:http://www.bls.gov/developers/api_unix.htm

我目前的脚本如下:

declare  id=""
echo -n "Enter id: "
read id
echo -n "enter startyear: "
read startyear
echo -n "enter endyear: "
read endyear


curl -i -X POST -H 'Content-Type: application/json' -d '{"seriesid":      ["$id"], "startyear":'$startyear' , "endyear":'$endyear'}' http://api.bls.gov/publicAPI/v2/timeseries/data/

我已经编辑过它,并像在参考页面上一样手工输入ID,这很有用。我似乎无法从输入中读取$ id并将其插入curl命令。非常感谢您对此的任何帮助。

EDIT1:

我更新了代码,并将-d选项的{}引号更改为双引号,同样的错误仍然存​​在。

EDIT2:

使用我收到的评论中提供的代码更新文件后:

Warning:  You can only select one HTTP request! 

我跑的时候。

2 个答案:

答案 0 :(得分:1)

为了澄清上述评论中的任何混淆,以下内容应该有效:

echo -n "Enter id: "
read id
echo -n "enter startyear: "
read startyear
echo -n "enter endyear: "
read endyear

curl -i \
     -X POST \
     -H 'Content-Type: application/json' \
     -d "{\"seriesid\":[\"${id}\"],\"startyear\":\"${startyear}\",\"endyear\":\"${endyear}\"}" \
     http://api.bls.gov/publicAPI/v2/timeseries/data/

答案 1 :(得分:0)

你的-d参数被'单引号包围,不允许变量插值。使用双引号"args $id "