我有一个看起来像
的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”位?
答案 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]
}
}
}