2017-02-26 44 views
1

我想從變量執行命令並顯示輸出。 代碼看起來像這樣,但它不起作用我不知道爲什麼?如何執行並顯示來自命令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}" 
+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。

+0

它仍然不起作用先生。無法獲取mac地址 – xhutpl

+1

@xhutpl爲什麼不能? –

0

如果設置argu這樣它將工作:

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

的原因:

  • 命令替換可以用`command`做
  • $4不能用雙引號括起來標記,否則它將被shell而不是awk替代。

確保設置了$REMOTE_ADDR

相關問題