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
그래서 한 번에 하나의 .sh 파일을 제공한 순서대로 하나씩 실행하고 싶으므로 결국에는 각 스크립트를 실행하고 마치 단일 .sh 파일인 것처럼 출력을 제공합니다. 각 .sh 파일을 한 번에 실행하고 싶지 않고, 단 하나의 .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에 올바른 옵션을 제공하거나 수행 방법을 모르는 경우 스크립트 호출에 조건을 추가하면 됩니다. 여기에서 설명할 수 있습니다.