假设我使用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