将 Unix Shell 变量添加到 CURL GET 请求的最佳方法

将 Unix Shell 变量添加到 CURL GET 请求的最佳方法

假设我使用curl –X GET带有以下链接的命令:

“$WEBSITE_URL/ACTION_NAME/ACTION1;id=$ID?Command=TEST&id1=$ID1&id2=$ID2&id3=$ID3”

正如您所看到的,该字符串中有一些 $variables。显然,仅仅将它们添加到字符串而不让 Bash 知道这些变量的开始和结束位置是行不通的。

因此,我尝试使用我找到的各种标签(即“$Variable”、${Variable}等)来分隔变量并使该字符串看起来和行为更像正常请求,但它们都不起作用。这里有一些相关的主题,它们很有帮助,但我得到的信息仍然无法使其发挥作用——可能是因为我的案例与基本示例有点不同,我在这里遗漏了一些东西。有任何想法吗?干杯!

答案1

您似乎没有正确转义特殊字符;具体来说;&以及?

另外,它可能是该网站的一个功能,但您的双引号不是您要查找的引号:"

我会用:

# curl "${WEBSITE_URL}/${ACTION_NAME}/${ACTION1}\;id=${ID}\?Command=TEST\&id1=${ID1}\&id2=${ID2}\&id3=${ID3}"

答案2

bash使用$变量名称中有效的所有字符来确定名称,即第一个非法字符限制名称字符串。

如有疑问${Variable}应使用。您已经提到过这一点,所以您的问题一定有所不同。

答案3

创建字符串作为变量并将该变量传递给 curl。

string="${WEBSITE_URL}/ACTION_NAME/ACTION1;id=${ID}?Command=TEST&id1=${ID1}&id2=${ID2}&id3=${ID3}"
echo $string #this should get the right string to be passed to curl
curl -X GET $string

相关内容