一尘不染

URL在bash脚本中编码字符串

linux

我正在尝试提交post变量的地方编写bash脚本,但是wget将其视为多个URL,我相信是因为它不是URLENCODED …这是我的基本思想

MESSAGE='I am trying to post this information'
wget -O test.txt http://xxxxxxxxx.com/alert.php --post-data 'key=xxxx&message='$MESSAGE''

我遇到了错误,alert.php没有得到post变量,而且它还很糊糊地说

无法解决我无法解决我无法解决尝试..依此类推。

上面的示例是一个简单的sudo示例,但我相信如果可以对其进行url编码,它将通过,我什至尝试了php:

MESSAGE='I am trying to post this information'
MESSAGE=$(php -r 'echo urlencode("'$MESSAGE'");')

但PHP错误了..任何想法?我如何在不执行PHP的情况下在$ MESSAGE中传递变量?


阅读 469

收藏
2020-06-07

共1个答案

一尘不染

您希望$MESSAGE用双引号引起来,因此外壳程序不会将其拆分为单独的单词:

ENCODEDMESSAGE=$(php -r "echo urlencode(\"$MESSAGE\");")
2020-06-07