• 首页 首页 icon
  • 工具库 工具库 icon
    • IP查询 IP查询 icon
  • 内容库 内容库 icon
    • 快讯库 快讯库 icon
    • 精品库 精品库 icon
    • 问答库 问答库 icon
  • 更多 更多 icon
    • 服务条款 服务条款 icon

curl命令请求json数据的变量引用方法

武飞扬头像
cuckoo_yang
帮助5

一、问题出现场景

写 Elasticsearch 的 shell 部署脚本,在添加 Elasticsearch 自定义用户时,我执行了下面这条指令。

# read -p '请输入自定义用户admin的密码:' adm_pass
# curl -H "Content-Type:application/json" -u elastic:"$es_pass" -XPOST “$es_ip:9200/_xpack/security/user/admin” -d '{"username":"admin","password":"$adm_pass","roles":["admin"],"full_name":"admin","email":null,"metadata":{},"enabled":"true",}'

执行后出现了如下问题,在命令行中的 json 数据内引用了一个变量 $adm_pass ,引用后变量未解析,admin用户的密码被设置成了字符串 $adm_pass ,而不是我输入的自定义密码。

二、解决方法

先了解下 javascript 的 json 数据格式,属性名必须用双引号包裹。

1、var json = '{"name":"admin"}'        //这个是正确的JSON格式
2、var json = '{\"name\":\"admin\"}'    //这个是正确的JSON格式
3、var json = '{name:"admin"}'          //这个是错误的JSON格式
4、var json = '{'name':'admin'}'		//这个是错误的JSON格式

需要注意的是,在 json 数据里的变量需要用单引号 ’ ’ 括起来。这里就是我的命令出现问题的原因。加单引号后问题解决。

# curl -H "Content-Type:application/json" -u elastic:"$es_pass" -XPOST “$es_ip:9200/_xpack/security/user/admin” -d '{"username":"admin","password":"'$adm_pass'","roles":["admin"],"full_name":"admin","email":null,"metadata":{},"enabled":"true",}'

三、总结

curl命令请求json数据中的变量引用方法,总结如下:

1、json 中变量不能解析(我出错的)
'{"password":"$adm_pass"}'

2、json 中变量能解析(执行成功的)
'{"password":"'$adm_pass'"}'

3、我看到网上还有这样的格式,我没有去测试,但是也列出来,后面有空再测试一下
'{"password":"'"$adm_pass"'"}'

这篇好文章是转载于:学新通技术网

  • 版权申明: 本站部分内容来自互联网,仅供学习及演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,请提供相关证据及您的身份证明,我们将在收到邮件后48小时内删除。
  • 本站站名: 学新通技术网
  • 本文地址: /boutique/detail/tanhfgkgch
系列文章
更多 icon
同类精品
更多 icon
继续加载