cut -f [duplicate] 出力について

cut -f [duplicate] 出力について

お待ちいただきありがとうございます。私は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ループ後に変数値にアクセスできます。

関連情報