首页 > 解决方案 > 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 命令一起工作呢?谢谢

标签: linuxbashshellunixcurl

解决方案


选项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的文档

  1. 创建包含以下内容的 .netrc 并将其放在您的主目录中。

    machine http://something.com
    login admin
    password adminpass
    
  2. 运行命令

    curl -n -k --output ${SP1}-60.zip
    

    curl 将自动查找 .netrc 文件。您还可以指定文件路径curl --netrc-file <netrc_file_path>


推荐阅读