我想从变量执行命令并显示输出。 代码看起来像这样,但它不起作用我不确切知道为什么?
#!/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}"
答案 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}'`
原因:
$4
不能用双引号括起来,否则它将被shell替换而不是awk。 确保$REMOTE_ADDR
已设置。