シェルスクリプトからawkに値を渡す

シェルスクリプトからawkに値を渡す

そのため、ファイルから読み取ったIPバンドルであるターゲット配列があります。今私のIPとsshコマンドの結果を含むファイルを分類しようとしています。しかし、それぞれに対して3つの異なるパスワードを試しているからです。 target と入力すると、2 つの拒否と 1 つのジョブ予約結果を受け取ります。だから私はジョブが特定の結果に対して予約されていることを確認してから「$ ip OK」を印刷し、そうでない場合は「$ ip failed」を印刷すると思いました。これが私が持っているものです。

#!/bin/bash
for ip in "${targets_array[@]}"
do
   cat "$output_file" | awk -v ip="$ip" '/$ip/&&/job/ {result="OK"} END {
     !result?result="failed":result=result;}'

done
私がしたいことの擬似コード:
1. 必要なIPと「job」という単語が見つかるファイルのcat出力ファイルライン
2.1。見つかると、文字列変数に「$ ip OK」が追加され、印刷されます。
2.2 見つからない場合は、文字列変数 "$ip failed" に追加します。
3.変数に保存された結果で出力ファイルを上書きします。

ただし、デバッグモードで実行すると、値がawkスクリプトに渡されないことがわかります。どのように通過できますか?

+ awk -v ip= '/$ip/&&/job/ {result="OK"} END {
     !result?result="failed":result=result;}'

私が切っているファイル:

unwantedString 124.131.8010 Permission denied, please try again.
unwantedString 125.124.90.134 Permission denied, please try again.
unwantedString 145.120.100.8 Permission denied, please try again.
unwantedString 145.101.100.158 Permission denied, please try again.
unwantedString 124.131.80.2 Permission denied, please try again.
unwantedString 125.124.90.134 job 32 at 2020-12-16 23:30
unwantedString 145.120.100.8 Permission denied, please try again.
unwantedString 145.101.100.158 job 27 at 2020-12-16 23:30
unwantedString 124.131.8010 Permission denied, please try again.
unwantedString 125.124.90.134 Permission denied, please try again.
unwantedString 145.120.100.8 Permission denied, please try again.
unwantedString 145.101.100.158 Permission denied, please try again.

答え1

まずエラーがあります!#/bin/bash #!/bin/bash

もしそうならなけれip=$ipばなりませんip="$ip"

その後、変数を使用するにはドル記号なしで変数を呼び出すことができますが、ip呼び出す必要があるパターン領域内では呼び出すことはできません$0 ~ ip

あなたの出力に応じて:

#!/bin/bash
for ip in "${targets_array[@]}" 
do
ip="$ip"
awk -v ip="$ip" '{if ( $2 == ip && $3 == "job" )  {print $2 " success"} else {print $2 " failed"}}' output_file > out
done

関連情報