Как заставить скрипт «ждать» завершения операции?

Как заставить скрипт «ждать» завершения операции?

У меня есть два сценария, или, может быть, лучше назвать один оберткой для другого.

Вот обертка:

#!/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" }

А вот и основной сценарий:

#!/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

Проблема со вторым скриптом заключается в том, что после последнего шага в sudo /etc/init.d/oracle-xe configure, когда скрипт настройки спрашивает «Хотите ли вы, чтобы Oracle (...) запускался при загрузке», сразу после этого шага, во время обычной установки, Oracle выполняет некоторые другие шаги:

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.

Этот шаг занимает некоторое время. Но мой скрипт завершается сразу после ответа yна последний вопрос...

Как заставить скрипт дождаться завершения всей конфигурации?

решение1

Чтобы заставить expectскрипт дождаться последнего шага Oracle, вы можете попробовать добавить следующую строку в конец скрипта expect:

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

Связанный контент