gpt4 book ai didi

curl - 如何在curl中传递变量?

转载 作者:行者123 更新时间:2023-12-01 15:36:13 25 4
gpt4 key购买 nike

目标是在 example.com 创建一个帐户。我们需要一个 字母数字名称 ,我们得到了。

我们有:

$name="egon111"
$pw="notegon"

curl -s -X POST -d 'username="'"$name"'"&password="'"$pw"'"' https://example.com/create

我们通常需要以下 curl 命令:
curl -s -X POST -d "username=egon111&password=notegon" https://example.com/create

语法有什么问题?在我看来,我们目前以名称发送 $name并作为密码 $pw确切地说,不是变量本身,这是完全错误的。
我们收到以下错误:
Select a username that is alphanumeric.

格瑞兹,
克拉拉

我是 stackoverflow 的新手。随意评论,以便我可以提高自己。

最佳答案

正如@sideshowbarker 指出的那样,您的分配不正确。在 shell 中,与 Perl 或 PHP 或 Ruby 中的全局变量不同,您不使用 $在分配变量时,但仅在引用它们时:

name="egon111"
pw="notegon"

但这仍然留下了 curl 中文字引号的问题。命令。不应引用查询字符串参数(以及它们在请求正文中的 POST ed 等效项)。 (上面赋值中的引号是 shell 语法,不会存储在变量中;在这种情况下,您可以完全不使用它们,因为您分配的值不包含任何空格,但它们是无害的。 )

但是查询字符串/POST 主体参数不是外壳参数。您的 curl命令:
curl -s -X POST -d 'username="'"$name"'"&password="'"$pw"'"' https://example.com/create

被 shell 扩展为相当于:
'curl' '-s' '-X' 'POST' '-d' 'username="egon111"&password="notegon"' \ 
'https://example.com/create'

注意文字 "围绕 username 的值和 password .这些由 Web 服务器解释为这些参数值的一部分,而不是引用语法。由于引号不是字母数字,您会收到您发布的错误消息。

您可以删除额外的引号,它应该可以正常工作:
curl -s -X POST -d 'username='"$name"'&password='"$pw" https://example.com/create

但这比它需要的要嘈杂。你不需要把 username=&password=在单引号中,因为那里没有可以扩展的内容。您需要引用 & ,但双引号可以很好地解决这个问题。所以你可以简单地这样做:
curl -s -X POST -d "username=$name&password=$pw" https://example.com/create

关于curl - 如何在curl中传递变量?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42313918/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com