Html 如何执行和显示命令cgi脚本的输出

Html 如何执行和显示命令cgi脚本的输出,html,bash,cgi,Html,Bash,Cgi,我想从变量执行命令并显示输出。 代码看起来像这样,但不起作用我不知道为什么 #!/bin/sh echo "Content-type: text/html" echo argu="arp -a | grep $REMOTE_ADDR | awk '{print $4}'" echo '<html> <head> <title> CGI script </title> </head> <body>' echo "<

我想从变量执行命令并显示输出。 代码看起来像这样,但不起作用我不知道为什么

#!/bin/sh

echo "Content-type: text/html"
echo

argu="arp -a | grep $REMOTE_ADDR | awk '{print $4}'"

echo '<html> <head> <title> CGI script </title> </head> <body>'
echo "<h1>HELLO $REMOTE_ADDR</h1>"
echo "Mac is ${argu}"
#/垃圾箱/垃圾箱
echo“内容类型:文本/html”
回声
argu=“arp-a | grep$REMOTE|ADDR | awk'{print$4}'
echo“CGI脚本”
echo“你好$REMOTE\u ADDR”
echo“Mac是${argu}”

您的脚本有一些问题,主要是
argu
命令应该在子shell中运行:

#!/bin/sh

echo "Content-type: text/html"
echo

argu="$(arp -a | grep "$REMOTE_ADDR" | awk '{print $4}')"

echo '<html> <head> <title> CGI script </title> </head> <body>'
echo "<h1>HELLO $REMOTE_ADDR</h1>"
echo "Mac is $argu"
#/垃圾箱/垃圾箱
echo“内容类型:文本/html”
回声
argu=“$(arp-a | grep“$REMOTE|u ADDR”| awk'{print$4}')”
echo“CGI脚本”
echo“你好$REMOTE\u ADDR”
echo“Mac是$argu”

此外,您
grep
的变量应该是双引号。您可以随时检查诸如@shellcheck.net之类的脚本的语法。

如果您像这样设置
argu
,它将起作用:

argu=`arp -a | grep "$REMOTE_ADDR" | awk '{print $4}'`
原因是:

  • 命令替换可以通过`Command'完成`
  • $4
    不能用双引号括起来,否则将由外壳代替awk

确保设置了
$REMOTE\u ADDR

它仍然不工作,先生。无法获取mac地址您应该包括您获得的输出,并显示哪部分不正确。