curl登录使用bash脚本中具有特殊字符的密码的请求?

问题描述 投票:0回答:1

我正在从输入文件中读取密码,然后使用该密码登录。但是,如果密码具有特殊字符,则失败。我如何使它适用于带有或不带有特殊字符的密码?尝试过'$ pass',但看起来不起作用。

ip="$(echo $line | awk -F ',' '{print $1}')"
pass="$(echo $line | awk -F ',' '{print $3}')"


output_json="$(curl -u admin:'$pass'  -X GET -H "Content-Type:application/json" https://$ip:443/admin -k)" 


bash shell curl special-characters
1个回答
0
投票
  1. 您应该always quote variable expansions
  2. disable variable expansions and other special characters中使用单引号

您当前的代码存在一些问题:

  • echo $line引用不正确,并且会在空格和其他特殊字符上中断;使用echo "$line"
  • admin:'$pass'将解析为传递给admin:$pass的文字字符curl;使用"admin:${pass}"
  • [https://$ip:443/admin也未正确引用,请使用"https://${ip}:443/admin"
  • 如果将$line设置为literal password in the script,则需要单引号使shell忽略特殊字符; line='...,sbxy$sT_i7d6I*7'
© www.soinside.com 2019 - 2024. All rights reserved.