为什么我不能将这些参数传递给我的命令?

时间:2017-02-07 11:58:24

标签: bash

B=master U='my.email@email.com' curl -u "${U}" "https://bitbucket.org/myteam/pod-dev/raw/${B}/install.bash"

我被问到:

Enter host password for user '':

请注意,“U”缺失。

还进行了卷曲:

GET /myteam/pod-dev/raw//install.bash HTTP/1.1

此外,B缺失(分支)

macOS Sierra 10.12.2

$ bash --version
GNU bash, version 3.2.57(1)-release (x86_64-apple-darwin16)
Copyright (C) 2007 Free Software Foundation, Inc.

3 个答案:

答案 0 :(得分:4)

您正在使用它们的变量赋值是命令的一部分。在您的情况下,shell会在实际设置之前尝试展开"${A}""${B}" - 在解析命令期间

您可以按;

分隔变量赋值和实际命令
B=master; U='my.email@email.com'; curl -u "${U}" "https://bitbucket.org/myteam/pod-dev/raw/${B}/install.bash"

这样他们就是3个单独的命令。

答案 1 :(得分:2)

bash会首先尝试扩展变量,但此时您还没有设置它们。例如见:

$ x=foo echo "$x"
>

$ x=foo; echo "$x"
> foo

答案 2 :(得分:-1)

尝试这样而不是你的命令:

export B=master; export U='my.email@email.com' ; curl -u "$U" "https://bitbucket.org/myteam/pod-dev/raw/$B/install.bash"