脚本中的bash curl用户名凭据

脚本中的bash curl用户名凭据,bash,curl,Bash,Curl,我将用户名和密码传递给curl命令,以接收api调用的输出。我不确定出了什么问题,但是curl命令在命令行中工作,但是当我在bash脚本中使用相同的curl命令时,它不能正确地获取凭据。API调用失败,出现授权错误。有人能在这里扔些指针吗 curl--silent-u'blah blah:youreawesome$1234'https://example.com/api/check 这是剧本 USERNAME=$1 密码=$2 curl--silent-u“${USERNAME}:${PASSW

我将用户名和密码传递给curl命令,以接收api调用的输出。我不确定出了什么问题,但是curl命令在命令行中工作,但是当我在bash脚本中使用相同的curl命令时,它不能正确地获取凭据。API调用失败,出现授权错误。有人能在这里扔些指针吗

curl--silent-u'blah blah:youreawesome$1234'https://example.com/api/check

这是剧本

USERNAME=$1
密码=$2
curl--silent-u“${USERNAME}:${PASSWORD}”https://example.com/api/check

{“timestamp”:1509422967185,“status”:401,“error”:“Unauthorized”,“message”:“Bad credentials”,“path”:“/api/check”}
试试这个

UNAME=$1
PASSWORD=$2
curl --silent -u "${UNAME}:${PASSWORD}" https://example.com/api/check
试试这个

UNAME=$1
PASSWORD=$2
curl --silent -u "${UNAME}:${PASSWORD}" https://example.com/api/check
大宗报价 卷发——沉默——胡说八道:你大概是1234美元

这可能是对引号的误解,但您的脚本不会接受
$
符号后的字符串

在为脚本提供输入时,可能需要将用户名和密码用引号括起来

大宗报价 卷发——沉默——胡说八道:你大概是1234美元

这可能是对引号的误解,但您的脚本不会接受
$
符号后的字符串


在为脚本提供输入时,可能需要将用户名和密码用引号括起来

谢谢你的回答!!不管出于什么原因,我修改了脚本,将username和password作为单独的变量,并将其传递给curl命令后,就可以工作了

CREDS=“${USERNAME}:${PASSWORD}”
CURL\u CMD=“CURL--silent-u${CREDS}”

${CURL\u CMD}https://example.com/api/check

谢谢您的回答!!不管出于什么原因,我修改了脚本,将username和password作为单独的变量,并将其传递给curl命令后,就可以工作了

CREDS=“${USERNAME}:${PASSWORD}”
CURL\u CMD=“CURL--silent-u${CREDS}”
${CURL\u CMD}https://example.com/api/check

您可以这样使用, 例如:

在代码中,请使用如下单引号

curl --silent -u "'${USERNAME}:${PASSWORD}'" https://example.com/api/check
你可以这样用, 例如:

在代码中,请使用如下单引号

curl --silent -u "'${USERNAME}:${PASSWORD}'" https://example.com/api/check

USERNAME!=用户
?但是,PASSWORD=PASSWORD;-)如果这解决了您的问题,请删除此Q,因为代码中的拼写错误与主题无关。祝你好运。
$USER
也是一个保留变量名(自动设置为当前用户名)。最好使用小写(或混合大小写)变量名来避免类似这样的冲突。@Sheller,我编辑这个问题是为了避免混淆。Thanks@GordonDavisson,这是一个很好的观点,我将用户名更改为mixedcase,并再次注意到相同的错误。我已经用StackTrace错误更新了问题,如果修复了,它应该可以工作。您是否正确引用脚本的参数?另外,尝试在
curl
命令之前添加
set-x
ti脚本,这样它将打印出它实际运行的内容(注意:它打印的内容并不是字面上正在执行的内容,而是与它等价的内容,但有时会有奇怪的引用或参数转义)。
USERNAME!=用户
?但是,PASSWORD=PASSWORD;-)如果这解决了您的问题,请删除此Q,因为代码中的拼写错误与主题无关。祝你好运。
$USER
也是一个保留变量名(自动设置为当前用户名)。最好使用小写(或混合大小写)变量名来避免类似这样的冲突。@Sheller,我编辑这个问题是为了避免混淆。Thanks@GordonDavisson,这是一个很好的观点,我将用户名更改为mixedcase,并再次注意到相同的错误。我已经用StackTrace错误更新了问题,如果修复了,它应该可以工作。您是否正确引用脚本的参数?另外,尝试在
curl
命令之前添加
set-x
ti脚本,这样它就可以打印出它实际运行的内容(注意:它打印的内容不是字面上正在执行的内容,而是与它等价的内容,但有时会有奇怪的引用或参数转义)。我不建议这样做。将命令放入变量中不会解决任何问题,如果密码包含空格或
$IFS
中的任何内容(或一些shell通配符或…请参阅),则会导致问题。如果这似乎解决了问题,那么很可能还有其他一些你还没有理解的事情正在发生,它可能会在以后再次出现。切换到小写变量,尝试
set-x
,看看到底发生了什么。我不建议这样做。将命令放入变量中不会解决任何问题,如果密码包含空格或
$IFS
中的任何内容(或一些shell通配符或…请参阅),则会导致问题。如果这似乎解决了问题,那么很可能还有其他一些你还没有理解的事情正在发生,它可能会在以后再次出现。切换到小写变量,尝试
set-x
,并找出真正发生的情况。