title: How to get POST parameters from CGI scripts written in bash?
body: <p>I'm writing a web application using CGI scripts written in bash.</p>
  
  <p>For <code>GET</code> requests, the request parameters are available in a variable named <code>$QUERY_STRING</code>. However, I'm unable to figure out where the similar value would be stored for <code>POST</code> requests.</p>
  
  <p>I'm using the following script:</p>
  
  <pre><code>#!"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
  </code></pre>
  
  <p>And this is what I get:</p>
  
  <pre><code>$ curl -so - --data "abc=ZZZZZZ&amp;d=PPPPPPPP" http://localhost/cgi-bin/test.sh | grep ZZZZZZ
  
  $ curl -so - "http://localhost/cgi-bin/test.sh?abc=ZZZZZZ&amp;d=PPPPPPPP" | grep ZZZZZZ
  declare -x QUERY_STRING="abc=ZZZZZZ&amp;d=PPPPPPPP"
  declare -x REQUEST_URI="/cgi-bin/test.sh?abc=ZZZZZZ&amp;d=PPPPPPPP"
  </code></pre>
  
  <p>How can I retrieve the values sent over <code>POST</code> requests?</p>
  
  <p>(If it matters, I'm using Apache 2.4).</p>