linux - bash 字符串插值返回空字符串

标签 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 正文?

提前致谢

最佳答案

变量被正确插值。问题是你没有用双引号将它括起来,所以你创建了无效的 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"}

如果在 bash 脚本中使用 jq 工具来操作 JSON 会更好。

关于linux - bash 字符串插值返回空字符串,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/65584596/

相关文章:

linux - 尝试在单个命令中在 docker 容器内运行 chmod

python - 用 python 自动化 firefox?

git - 无法安装最新版本的Gitlab

linux - 移动除一个以外的所有文件

linux - 在 shell 脚本中使用 sed 替代不起作用

database - 我正在寻找适合ssd磁盘的数据库

linux - 如何知道 "lag"/串口传输延迟?

linux - Awk 以 DD MM YYYY 格式将日期放在空白列中

php - Ziparchive 无法仅在 PHP 中打开 zip 文件

linux - 遍历到文件夹树linux的底部