2017-02-26 18 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コマンドは、サブシェルで実行する必要があります

#!/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で行うことができますが、二重引用符で囲まれてはなりませんそれ以外の場合は、awkの代わりにシェルで置き換えられます。

$REMOTE_ADDRが設定されていることを確認してください。

関連する問題