首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >将PHP变量发布到bash脚本中

将PHP变量发布到bash脚本中
EN

Unix & Linux用户
提问于 2018-05-03 09:11:20
回答 1查看 1.3K关注 0票数 0

我已经用bash脚本连接到一个API,如下所示:

代码语言:javascript
复制
#!/bin/bash

curl "https://example.com/templates/search?field=template_id&    field=name" \
-H "Authorization: Bearer ----------------------------------------------------------------"

curl -X POST "https://example.com/audits" \
-d '{ "template_id": "template_28c5b7ec77f34ea7881b6a9ef9c01b91", "header_items": [ { "item_id": "f3245d40-ea77-11e1-aff1-0800200c9a66", "label": "Audit Title", "type": "textsingle", "responses": { "text": "${title}" } }, { "item_id": "f3245d43-ea77-11e1-aff1-0800200c9a66", "label": "Conducted By", "type": "textsingle", "responses": { "text": "John Citizen" } } ] }' \
-H "Content-Type: application/json" \
-H "Authorization: Bearer ----------------------------------------------------------------"

这连接成功了。

然后,我有一个PHP网页,其中有一个表单,您可以在其中输入审核的标题。当我按下对表单的保存时,上面的脚本将运行并创建审核。但是,标题是${ title },而不是textbox的值。

是否有可能以这种方式将变量值发布到bash脚本?

EN

回答 1

Unix & Linux用户

回答已采纳

发布于 2018-05-03 09:21:31

更新时考虑到评论和聊天讨论。

PHP代码以sh ./curl.sh $title的形式运行shell脚本,其中$title是PHP变量(理想情况下,它应该正确地引用$title数据,以免混淆shell)。因此,shell脚本需要从命令行参数$*中选择标题,而不是从shell变量$title中选择标题。

发送的JSON文档是单引号的,这意味着变量展开$title不会被shell看到。

您需要暂时跳出单引号字符串,以便展开变量:

代码语言:javascript
复制
-d '{ "template_id": "template...{ "text": "'"$*"'" }...

"'"$*"'"中的外部双引号属于JSON文档,单引号中的内容属于shell。内部双引号引用$*值(如果其中包含空白和/或文件名全局模式)。

PHP代码中还有另外一个问题,这意味着PHP $title变量从未正确设置。当这个问题得到解决时,它就像预期的那样起了作用。

票数 2
EN
页面原文内容由Unix & Linux提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://unix.stackexchange.com/questions/441495

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档