Wie lässt man ein Skript „warten“, bis ein Vorgang abgeschlossen ist?

Wie lässt man ein Skript „warten“, bis ein Vorgang abgeschlossen ist?

Ich habe zwei Skripte, oder besser wäre es, das eine als Wrapper für das andere zu bezeichnen.

Hier kommt die Hülle:

#!/usr/bin/expect

set timeout 20

spawn "./installOracleDatabase.sh"

expect "replace Disk1/upgrade/gen_inst.sql?" { send "N\r" }
expect "Specify the HTTP port that will be used for Oracle Application Express" { send "\r" }
expect "Specify a port that will be used for the database listener" { send "\r" }
expect "initial configuration:" { send "root\r" }
expect "Confirm the password:" { send "root\r" }
expect "Do you want Oracle Database 11g Express Edition to be started on boot" { send "y\r" }

Und hier ist das Hauptskript:

#!/bin/bash
#install required libraries and programs
sudo yum -y install libaio bc flex unzip
#unzipping the Oracle package
unzip -q oracle-xe-11.2.0-1.0.x86_64.rpm.zip
cd Disk1
sudo rpm -ivh oracle-xe-11.2.0-1.0.x86_64.rpm
sudo /etc/init.d/oracle-xe configure

cat " . /u01/app/oracle/product/11.2.0/xe/bin/oracle_env.sh" >> $HOME/.bashrc

Das Problem mit dem zweiten Skript besteht darin, dass Oracle nach dem letzten Schritt sudo /etc/init.d/oracle-xe configure, wenn das Konfigurationsskript fragt „Möchten Sie, dass Oracle (...) beim Booten gestartet wird“, direkt nach diesem Schritt, während der normalen Installation, einige andere Schritte ausführt:

Do you want Oracle Database 11g Express Edition to be started on boot (y/n) [y]:y

Starting Oracle Net Listener...Done
Configuring database...Done
Starting Oracle Database 11g Express Edition instance...Done
Installation completed successfully.

Dieser Schritt dauert etwas. Aber mein Skript wird direkt nach der Beantwortung yder letzten Frage beendet ...

Wie kann ich das Skript zwingen, zu warten, bis die gesamte Konfiguration abgeschlossen ist?

Antwort1

Um das expectSkript bis zum letzten Schritt von Oracle warten zu lassen, können Sie versuchen, die folgende Zeile am Ende des expectSkripts hinzuzufügen

expect "Starting Oracle Net Listener...Done" { send "\r" }
expect "Configuring database...Done" { send "\r" }
expect "Starting Oracle Database 11g Express Edition instance...Done" { send "\r" }
expect "Installation completed successfully." { send "\r" }
expect eof

verwandte Informationen