目标是在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的新手。随意发表评论,以便我可以提高自己。
答案 0 :(得分:1)
你的作业不正确,正如@sideshowbarker所说。在shell中,与Ruby中的Perl或PHP或全局变量不同,在分配变量时不要对变量使用$
,而只在引用变量时使用name="egon111"
pw="notegon"
:
curl
但是仍然存在POST
命令中的文字引号问题。不应引用查询字符串参数(以及请求正文中的curl
ed等效项)。 (上面赋值中的引号是shell语法,不会存储在变量中;在这种情况下你可以完全取消它们,因为你指定的值不包含任何空格,但它们是无害的。 )
但查询字符串/ POST正文参数不是shell参数。你的curl -s -X POST -d 'username="'"$name"'"&password="'"$pw"'"' https://example.com/create
命令:
'curl' '-s' '-X' 'POST' '-d' 'username="egon111"&password="notegon"' \
'https://example.com/create'
被shell扩展为相当于:
"
请注意username
和password
值周围的文字curl -s -X POST -d 'username='"$name"'&password='"$pw" https://example.com/create
。这些由Web服务器解释为这些参数值的一部分,而不是引用语法。由于引号不是字母数字,因此您会收到您发布的错误消息。
你可以删除多余的引号,它应该可以正常工作:
username=
但这比它需要的更吵。您不需要将&password=
和&
放在单引号中,因为那里没有任何内容可以展开。您需要引用curl -s -X POST -d "username=$name&password=$pw" https://example.com/create
,但双引号可以正常工作。所以你可以这样做:
if (num_of_players == 1) {
players[0] = player1;
}
if (num_of_players == 2) {
players[0] = player1;
players[1] = player2;
}
if (num_of_players == 3) {
players[0] = player1;
players[1] = player2;
players[2] = player3;
}
if (num_of_players == 4) {
players[0] = player1;
players[1] = player2;
players[2] = player3;
players[3] = player4;
}
if (num_of_players == 5) {
players[0] = player1;
players[1] = player2;
players[2] = player3;
players[3] = player4;
players[4] = player5;
}
if (num_of_players == 6) {
players[0] = player1;
players[1] = player2;
players[2] = player3;
players[3] = player4;
players[4] = player5;
players[5] = player6;
}
for (String y : players) {
JOptionPane.showMessageDialog(null, "The first dice rolls " + y);