执行另一个命令时shell脚本中的参数替换

时间:2014-04-04 22:28:52

标签: shell curl

我编写了一个卷曲和下载数据库的脚本

DB_URL="$(curl --user $1:$2 -s https://myurl.com/ | grep -o \http\:[a-zA-Z.0-9\:/-]* | grep DBNAME$ | tail -1)"

echo -e "\033[33;31m The database is here :" echo $DB_URL

但是,$ 1和$ 2并没有被我传递的两个参数所取代。我该怎么做?我尝试了许多不同的替代方法,但仍然没有成功。

通过用正确的用户名和密码替换$ 1和$ 2来直接执行

1 个答案:

答案 0 :(得分:0)

要回答我自己的问题,这有效:

DB_URL=$(curl --user "$1":"$2" -s https://myurl.com/ | grep -o \http\:[a-zA-Z.0-9\:/-]* | grep DBNAME$ | tail -1)

必须将变量放在引号中。

请参阅下面的glenn评论。引号阻止了密码中的特殊字符被解释。