我有一个 bash shell 脚本,它执行由变量组成的curl 命令:
# Variables
URL="http://$UN:$PW@localhost:8080/rest/v1"
当用户登录时,$UN 和 $PW 由脚本中的读取命令填充...
# Login
echo "Please enter your username and password."
read -p "Username: " UN
read -s -p "Password: " PW
假设登录时用户名设置为“alice”,密码设置为“password”等安全内容。
我遇到的问题是,当构建 $URL 时,$UN 和 $PW 变量显示为空,即 URL 应该如下所示: http://alice:密码@localhost:8080/rest/v1但我看到的是http://:@localhost:8080/rest/v1
如果我回显脚本中的变量,我可以看到 UN 和 PW 变量已被填充:
echo $UN
返回爱丽丝
echo $PW
返回密码,但如果我
echo $URL
他们失踪了
我怀疑这与 http:// 中的最后一个 / 有关,但我可能是错的。注意我尝试以不同的方式更改将变量插入到 $URL 变量中...
"http://${UN}:${PW}@localhost:8080/rest/v1"
"http://"$UN":"$PW"@localhost:8080/rest/v1"
"http://"${UN}":"${PW}"@localhost:8080/rest/v1"
...但结果是一样的。
任何建议将不胜感激!
答案1
您需要设置 $URL 变量后$UN 和 $PW,如下所示:
echo "Please enter your username and password."
read -p "Username: " UN
read -s -p "Password: " PW
URL="http://${UN}:${PW}@localhost:8080/rest/v1"