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

时间:2017-02-26 00:46:42

标签: 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 "<h1>HELLO $REMOTE_ADDR</h1>"
echo "Mac is ${argu}"

2 个答案:

答案 0 :(得分:0)

您的脚本有一些问题,主要是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"

此外,您grep的变量应该是双引号。您始终可以检查脚本的语法,例如@@ shellcheck.net。

答案 1 :(得分:0)

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

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

原因:

  • 命令替换可以使用`command`
  • 完成
  • $4不能用双引号括起来,否则它将被shell替换而不是awk。

确保$REMOTE_ADDR已设置。