在 http:// 后面插入后,使用变量构建的 Bash Shell URL 丢失

在 http:// 后面插入后,使用变量构建的 Bash Shell URL 丢失

我有一个 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"

相关内容