如何将-v参数传递给通过URL调用的AWK CGI脚本?

时间:2011-11-16 13:49:06

标签: awk cgi

我有一个看起来像

的AWK脚本
#!/usr/bin/gawk -f

BEGIN { print myVar; }
{ print; }

我可以通过命令

在Unix shell中本地运行
./myScript.awk -v myVar=value /tmp/inputfile

它正确打印“value”然后转储输入文件。

我设置了一个启用了CGI的apache web服务器并创建了以下myScript.cgi:

#!/usr/bin/gawk -f

BEGIN {
    print "Content-type: text/plain";
    print "";
    print myVar;
}
{ print; }

我可以通过将我的网络浏览器指向

来运行它
http://localhost/cgi-bin/myScript.cgi?/tmp/inputfile

但是如何通过URL传递“-v myVar = value”位?

1 个答案:

答案 0 :(得分:1)

无法通过CGI接口传递'-v'变量。访问信息的唯一方法是通过CGI接口为您设置的许多环境变量。您可以通过ENVIRON数组以awk方式访问这些内容。你可能最感兴趣的是QUERY_STRING变量,所以试试这个:

#!/usr/bin/gawk -f
BEGIN {
    print "Content-type: text/plain"
    print ""
    print ENVIRON["QUERY_STRING"]
}
1

http://localhost/cgi-bin/myScript.cgi?myVar=foo&otherVar=bar访问时,ENVIRON["QUERY_STRING"]将包含myVar=foo&otherVar=bar。您必须自己处理此字符串以提取变量。例如(未经测试):

BEGIN {
    split(ENVIRON["QUERY_STRING"], a, "&")
    for (i in a) {
        if (a[i] ~ /^myVar=/) {
            split(a[i], tmp, "=")
            myVar=tmp[2]
        }
    }
}