お待ちいただきありがとうございます。私はLinuxを初めて使用するので、cutコマンドの出力を解析する方法を理解するのに役立ちます。
だから現在変数があります。
x=$(discover nginx --human=nood | cut -f1,6)
だから私の出力はecho "$x
次のリストです
インスタンスIDのIPアドレス
私のプログラムでは、xの各行に対してforループを実行し、それぞれ最初の変数と2番目の変数を抽出したいと思います。例: 配列の場合 a[0] = インスタンス ID および a[1] = IPDeress
誰かが要素を個別に抽出する方法を案内してください。ループを実行し$x
てその中で切り取ることができることを知っていますが、より良い方法があるかどうかを学びたいです。
答え1
これを行うには、データを変数に保存する必要はなく、次の出力を繰り返すだけですdiscover
。
discover nginx --human=nood | cut -f 1,6 |
while read -r instanceID IPAddress; do
# Use "$instanceID" and "$IPAddress" here
done
または、bash
プロセスの置き換えを理解するシェルで(<( ... )
):
while read -r instanceID IPAddress; do
# Use "$instanceID" and "$IPAddress" here
done < <( discover nginx --human=nood | cut -f 1,6 )
これらの2つの違いは、一部の変数の値を渡したい場合にのみ表示されます。ループから抜け出す。最初の例では、ループはサブシェルで実行されるため、ループ内に設定された変数値は使用されません。後ろにループ(自分のローカル環境に存在する)
2番目の例では、関連するサブシェルがないため(プロセス置換を使用して実行するサブシェルを除くdiscover
)、cut
ループ後に変数値にアクセスできます。