7つの異なる.shファイルがあり、それぞれがさまざまなタスクを実行し、主にデバイスを診断します。例: FanPsu.sh これが出力です。
FANs Status
FAN1A | 38h | ok | 29.96 | 11696 RPM
FAN1B | 39h | ok | 29.97 | 11868 RPM
FAN2A | 3Ah | ok | 29.98 | 11696 RPM
FAN2B | 3Bh | ok | 29.99 | 11954 RPM
FAN3A | 3Ch | ok | 29.100 | 11610 RPM
FAN3B | 3Dh | ok | 29.101 | 12040 RPM
FAN4A | 3Eh | ok | 29.102 | 11696 RPM
FAN4B | 3Fh | ok | 29.103 | 11954 RPM
PSUs Status
PSU Mismatch | 17h | ns | 144.96 | Disabled
Status | 52h | ok | 10.1 | Presence detected
Status | 53h | ok | 10.2 | Presence detected
PSU Redundancy | 18h | ok | 144.96 | Fully Redundant
Drives.sh 、これが出力です
Check Drives Status
Slot Number : 0
Drive's position : DiskGroup 0
Media Error : 0
Other Error : 0
Predictive Failure : 0
Raw Size : 558.911 GB [0x45dd2fb0 Sectors]
Firmware state : Online, Spun Up
Inquiry Data : SEAGATE ST600MM0069 ST31WFJ0RVMG
Foreign State : None
Media Type : Hard Disk Device
Temperature : 39C (102.20 F)
S.M.A.R.T alert : No
Slot Number : 1
Drive's position : DiskGroup 0
Media Error : 0
Other Error : 0
Predictive Failure : 0
Raw Size : 558.911 GB [0x45dd2fb0 Sectors]
Firmware state : Online, Spun Up
Inquiry Data : SEAGATE ST600MM0069 ST31WFJ0R80Z
Foreign State : None
Media Type : Hard Disk Device
Temperature : 39C (102.20 F)
S.M.A.R.T alert : No
Slot Number : 2
Drive's position : DiskGroup 1
Media Error : 0
Other Error : 0
Predictive Failure : 0
Raw Size : 5.821 TB [0x2e93432b0 Sectors]
Firmware state : Online, Spun Up
Inquiry Data : SEAGATE XS6400LE70084 0001HSR032V2
Foreign State : None
Media Type : Solid State Device
Temperature : 42C (107.60 F)
S.M.A.R.T alert : No
Check Volumes Status
Name : Virtual Disk0
RAID Level : 1
State : Optimal
Number Of Drives : 2
Name : Virtual Disk1
RAID Level : 0
State : Optimal
Number Of Drives : 1
そのため、一度に1つの.shファイルを提供した順番で1つずつ実行したいので、最終的には各スクリプトを実行し、まるで単一の.shファイルのように出力を提供します。各.shファイルを一度に実行したくないので、1つの.shファイルだけを実行すると、すべての.shファイルを実行したいと思います。
ベストアンサー1
これについて難しいことはありません。シェルスクリプトは他のシェルスクリプトを実行できます。スクリプトを実行可能にしたと仮定すると、chmod a+x FanPsu.sh
次のことができます。
#!/bin/bash
FanPsu.sh
Drives.sh
AnotherScript.sh
# etc.
またはまだ行っていない場合:
#!/bin/bash
bash FanPsu.sh
bash Drives.sh
bash AnotherScript.sh
# etc.
これを別のシェルスクリプト(たとえばAllScripts.sh
)として保存し、実行可能にしてから(chmod a+x AllScripts.sh
)実行します。
最近では、シェルインタプリタの複数のインスタンスが互いに実行されるためのオーバーヘッドは非常に低いです。しかし、何らかの理由で単一のインスタンスを使用したい場合は、スクリプトを一緒にリンクする方が良いかもしれませんが、おそらくそれには依存しません。正しいです。とにかく、別々のファイルでメンテナンスする方が簡単です。別のオプションは、各スクリプトをシェル関数に変換し、関数定義を使用してファイルをインポートしてから関数を呼び出すことです。しかし、実際には必要ありません。他のスクリプトからスクリプトを実行することはまったく問題ありません。
スクリプトが失敗した場合にいつでも実行を停止するには、shebangに正しいオプションを指定するか、実行方法がわからない場合は、スクリプト呼び出しに条件を追加するだけです。ここで説明できます。