curl命令请求json数据的变量引用方法
一、问题出现场景
写 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
系列文章
更多
同类精品
更多
-
photoshop保存的图片太大微信发不了怎么办
PHP中文网 06-15 -
Android 11 保存文件到外部存储,并分享文件
Luke 10-12 -
《学习通》视频自动暂停处理方法
HelloWorld317 07-05 -
word里面弄一个表格后上面的标题会跑到下面怎么办
PHP中文网 06-20 -
photoshop扩展功能面板显示灰色怎么办
PHP中文网 06-14 -
微信公众号没有声音提示怎么办
PHP中文网 03-31 -
excel下划线不显示怎么办
PHP中文网 06-23 -
excel打印预览压线压字怎么办
PHP中文网 06-22 -
怎样阻止微信小程序自动打开
PHP中文网 06-13 -
TikTok加速器哪个好免费的TK加速器推荐
TK小达人 10-01