あなたが達成しようとしている正確な出力は明確ではありませんが、コードを修正する必要があることが 2 つあります。
agent_name=$(hostname)
nslookup $agent_name | grep Name | awk '{print $2}' > /var/tmp/${agent_name}_list.txt
これはさらに減らすことができます
agent_name=$(hostname)
nslookup $agent_name | awk '/Name/{print $2}' > /var/tmp/${agent_name}_list.txt
awk の多くの機能の 1 つは、パターンを照合し、そのアクションを一致した行だけに制限することです。
コメント
agent_name='hostname'
ここでは、agent_name の値を文字列値 "hostname" に設定しているだけです。上記の方法に注意してください。コマンドの現在の値を取得するために、シェル コマンド置換機能を使用していますhostname
。
nslookup $agent_name | grep Name | awk '{print $2}' > /var/tmp/$agent_name_list.txt
ここでは、変数「wrappers」を使用{}
して、シェルが $agent_name_list を変数として評価しないようにする必要があります。agent_name に値を割り当てたので、agent_name_list の値はありません。先行する '$' 文字を想定して、{}
ラッパーはシェルに「これは変数名です。値は何ですか?」と伝えます。..
上記の修正された例で問題が完全に解決されない場合は、メッセージを編集して、サンプル入力データ、サンプル データに基づく必要な出力、現在のコード、およびその現在のコードからの出力を含めることを検討してください。
IHTH