linux - curl在变量中使用用户名和密码下载
问题描述
嗨,我正在 test.sh 中编写一个自动脚本,试图下载一个文件。当我使用所有硬代码字符串时,它工作正常。但它不适用于变量。属于我的代码示例:
#!/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>
推荐阅读
- javascript - 根据另一个 div 点击更改 div 中的元素
- google-drive-api - Google 希望将 YouTube 视频和测试帐户凭据作为 G Suite 应用验证流程的一部分
- rest - SoapUI,get方法中的请求正文?
- python - 如何在 Python Mockito 中正确使用 verifyNoUnwantedInteractions()?
- docker - 从容器提供 SPA 内容的优缺点是什么?
- javascript - IE $(e.target.closest(".k-event")).data("uid") 不工作
- javascript - 反应父母将道具传递给孩子会导致无限循环
- sql - SP 在条件指定不返回时返回匹配项
- javascript - 如何使用 React Hooks 获取 Antd Form 的值?
- eclipse - Ftrjsdk-dll(32 位)无法在 AMD 64 位平台上加载