私は行数を数えてから停止するbashスクリプトをLinuxマシンに書き込もうとしています。Firmware state: Rebuild
その後、その行番号を取得し(たとえば、行番号0が最初の行なので、15 -1 = 14)、変数に保存しようとします。 。どうすればいいのかわからないので、助けを求めました。
Firmware state: Online, Spun Up
Firmware state: Online, Spun Up
Firmware state: Online, Spun Up
Firmware state: Online, Spun Up
Firmware state: Online, Spun Up
Firmware state: Online, Spun Up
Firmware state: Online, Spun Up
Firmware state: Online, Spun Up
Firmware state: Online, Spun Up
Firmware state: Online, Spun Up
Firmware state: Online, Spun Up
Firmware state: Online, Spun Up
Firmware state: Online, Spun Up
Firmware state: Online, Spun Up
Firmware state: Rebuild
Firmware state: Online, Spun Up
修正する
ハードドライブがスロット0に接続されていない場合、正常に動作しない問題が見つかるまで、正常に動作していました。
[root@la43 ~]# /opt/MegaRAID/MegaCli/MegaCli64 -PDList -aALL | grep -e "Firmware state" -e "Slot"
Slot Number: 4
Firmware state: Rebuild
Slot Number: 5
Firmware state: Online, Spun Up
Slot Number: 6
Firmware state: Online, Spun Up
Slot Number: 7
Firmware state: Online, Spun Up
Slot Number: 8
Firmware state: Online, Spun Up
Slot Number: 9
Firmware state: Online, Spun Up
Slot Number: 10
Firmware state: Online, Spun Up
Slot Number: 11
Firmware state: Online, Spun Up
Slot Number: 12
Firmware state: Online, Spun Up
Slot Number: 13
Firmware state: Online, Spun Up
Slot Number: 14
Firmware state: Online, Spun Up
Slot Number: 15
Firmware state: Online, Spun Up
だから私が必要とするのは、答えからスロット番号4を取得することです。したがって、ファームウェアの状態を取得する必要があります。ライン1を再構築し、-1を使用してライン0を取得し、スロット番号4を取得します。
したがって、varは最終的に4になります。
どうすればいいですか?
ティア
ベストアンサー1
そしてawk
:
$ var=$(awk '$0=="Firmware state: Rebuild"{print --NR; exit}' file)
$ echo "$var"
14
awk
現在の行が同じでFirmware state: Rebuild
スクリプトが終了すると、スクリプトは入力レコード番号から1を引いた値を印刷します。次に、$(...)
コマンド置換の出力を変数に割り当てますvar
。