Bash 脚本中的复杂密码

Bash 脚本中的复杂密码

我写了一个脚本来调用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/

相关内容