带有大量单引号和双引号的命令的 Bash 脚本

标签 bash curl quotes double-quotes single-quotes

我需要使用 curl 命令:

curl -d '{ "auth_token": "YOUR_AUTH_TOKEN", "text": "嘿,看看我能做什么!"}'\http://localhost:3030/widgets/welcome

在 bash 脚本中,而不是 “嘿,看看我能做什么!”“YOUR_AUTH_TOKEN” 之后;我需要一个变量 $p

这是我第一次尝试 bash 脚本并阅读有关引号等的教程,但我仍然无法使其工作。

最佳答案

最简单的做法是从 here 文档(一种动态创建的临时文件)中读取数据,而不是尝试将整个内容作为字符串引用:

curl -d@- http://localhost:3030/widgets/welcome <<EOF
{ "auth_token": "YOUR_AUTH_TOKEN",
  "text": "$p" }
EOF

如果-d 的参数以@ 开头,参数的其余部分将作为包含数据的文件的名称。 - 的文件名表示标准输入,curl 的标准输入由 EOF 标记之间的行提供。

另一种方法是对字符串加双引号并转义所有嵌入的双引号。呸。

... -d "{\"auth_token\": \"YOUR_AUTH_TOKEN\", \"text\": \"$p\"}" ...

关于带有大量单引号和双引号的命令的 Bash 脚本,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33290506/

相关文章:

javascript - 为什么有些对象文字属性被引用而有些则没有?

linux - bash 脚本运行每个文件夹

bash - 应为整数表达式

Linux - 沿新行拆分文本文件

curl - Golang 单足/双足oauth 1.0a认证

jquery - 在网站中显示自动授权的 Google Analytics 数据?

java - 将 Curl 转换为 Java 等价物

bash - 如何在 bash 脚本中运行脚本退出时未停止的命令?

Python:尝试通过在名片上移动外部边框来获取用户输入

mysql - MySQL 中何时使用单引号、双引号和反引号