我写了一个脚本来调用API,代码如下:
#!/bin/bash
curl -s "https://openapi.domain.com/api/rest/login?user=khoitran&pass=gkoq@Ggk!5648@#&output=json"
脚本不起作用,所以我尝试在脚本之外运行它以找出问题所在。结果发现我的复杂传递是原因
vagrant@vagrant-ubuntu-trusty-64:~$ curl -s "https://openapi.domain.com/api/rest/login?user=khoitran&pass=gkoq@Ggk!5648@#&output=json"
-bash: !5648: event not found
(我的密码是:gkoq@Ggk!5648@#)
我尝试了几种方法来处理该密码(当然,除了更改密码,哈哈),但都不起作用。请您提供建议。
答案1
不会!
被翻译为!
,它实际上是将其作为命令运行。因此,请将您的密码括在单引号中'
:
'gkoq@Ggk!5648@#'
您可以使用 echo 线进行测试以确保它正常工作:
:~$ echo 'gkoq@Ggk!5648@#'
gkoq@Ggk!5648@#
现在,将pass
变量设置为它:
:~$ pass='gkoq@Ggk!5648@#'
:~$ echo $pass
gkoq@Ggk!5648@#
希望这可以帮助!
答案2
我终于找到了一种方法,使用一种名为 urlencode 的方法将 pass 解析为“gkoq%40Ggk%215648%40%23”,然后将其直接放入我的脚本中。要解析 pass,请使用此链接 https://www.tools4noobs.com/online_php_functions/urlencode/