嗨,我正在test.sh中编写一个自动脚本,试图下载一个文件。当我使用所有的硬代码字符串时,它工作得很好。但它不适用于变量。Belong是我的代码示例:
#!/bin/bash
USER="admin"
PWD="adminpass"
curl -v -k -u ${USER}:${PWD} ${NEXUS_URL}/${SP1}/60/${SP1}-60.zip --output ${SP1}-60.zip
上面的代码不工作无法下载我的文件,但如果我把它放为:
curl -v -k -u "admin":"adminpass" ${NEXUS_URL}/${SP1}/60/${SP1}-60.zip
--output ${SP1}-60.zip
然后它就起作用了。那么,如何让变量凭证与这个curl命令一起工作呢?感谢
选项1
参数扩展将不包括双引号。您可以使用:
#!/bin/bash
USER='"'admin'"' #single quote, double quote, single quote
PASS='"'adminpass'"'
curl -v -k -u ${USER}:${PASS} ${NEXUS_URL}/${SP1}/60/${SP1}-60.zip
选项2
或者,您可以创建一个.netrc文件并使用curl-n,如下所示:
文档来自https://ec.haxx.se/usingcurl-netrc.html
创建包含以下内容的.netrc并将其放置在主目录中。
machine http://something.com login admin password adminpass
运行命令
curl -n -k --output ${SP1}-60.zip
curl将自动查找.netrc文件。您也可以使用
curl --netrc-file <netrc_file_path>
指定文件路径