如何从用bash编写的CGI脚本中获取POST参数?

How to get POST parameters from CGI scripts written in bash?

我正在使用以 bash 编写的 CGI 脚本编写 Web 应用程序。

对于 GET 请求,请求参数在名为 $QUERY_STRING 的变量中可用。但是,我无法确定为 POST 请求存储相似值的位置。

我正在使用以下脚本:

#!"c:/msys64/usr/bin/bash.exe"
# On *nix, replace above with #!/bin/bash

echo -en "Status: 200 OK\r\n"
echo -en "Content-type: text/plain\r\n\r\n"

declare -x
declare -a

这就是我得到的:

$ curl -so - --data "abc=ZZZZZZ&d=PPPPPPPP" http://localhost/cgi-bin/test.sh | grep ZZZZZZ

$ curl -so - "http://localhost/cgi-bin/test.sh?abc=ZZZZZZ&d=PPPPPPPP" | grep ZZZZZZ
declare -x QUERY_STRING="abc=ZZZZZZ&d=PPPPPPPP"
declare -x REQUEST_URI="/cgi-bin/test.sh?abc=ZZZZZZ&d=PPPPPPPP"

如何检索通过 POST 请求发送的值?

(如果重要的话,我使用的是 Apache 2.4)。

使用POST方法时。 POST 值将作为 CGI 程序的输入。所以在 bash 中只需使用

read POST_STRING

POST_STRING 然后包含 POST 值,其格式与 QUERY_STRING 保存 GET 请求的值的格式相同。