linux - bash 字符串插值返回空字符串
问题描述
我正在处理简单的 curl POST 脚本,我遇到了使用脚本中的数据初始化的变量的字符串插值问题。让我描述一下:
#!/bin/bash
EMAIL=$(source ./random_email_generator.sh) #this generates some random string
echo "$EMAIL" #here email is printed well
curl --insecure --header "Content-Type: application/json" \
--request POST \
--data '{"email":'"$EMAIL"',"password":"validPassword"}' \ #problem lies here because email is always empty string
http:/ticketing.dev/api/users/signup
总而言之,这里有很多引号和双引号,而且有点混淆,我该如何解析EMAIL的值来代替json body?
提前致谢
解决方案
变量被正确插值。问题是你没有用双引号括起来,所以你创建了无效的 JSON。
curl --insecure --header "Content-Type: application/json" \
--request POST \
--data '{"email":"'"$EMAIL"'","password":"validPassword"}' \
http:/ticketing.dev/api/users/signup
当您想查看命令的实际外观时echo
,curl
请将bash -x
. 你会看到
--data {"email":foo@bar.com,"password":"validPassword"}
如果您使用该jq
工具在 bash 脚本中操作 JSON 会更好。
推荐阅读
- r - 按特定列分组并在 Python 中使用 dplython 汇总行数
- javascript - 如何在不使用叠加层的情况下标记开放层中的特征
- ruby-on-rails - 如何更改 Rspec 中的默认控制器?
- javascript - 如何使用 CodeMirror 在 TextArea 中添加值
- r - as.POSIXlt.numeric(x, tz = tz(x)) 中的错误:必须提供“原点”
- node.js - AWS SES 中的电子邮件问题
- sonarqube - Sonarqube git ci 推送拒绝
- angular - 存储价值不改变ngrx
- jquery - 使用 jquery 添加类但不工作
- wordpress - blogdesigner插件博客设计模板问题