我正在构建一个脚本,以便在设置服务器时让我的生活更轻松。
我遇到问题:
# Code to MV/CP/CHOWN files (working as intended)
sudo su $INSTALL_USER -c \
"sh $SOFTWARE_DIR/soa/Disk1/runInstaller \
-silent -response $REPONSE_LOC/response_wls.rsp \
-invPtrLoc $ORA_LOC/oraInsta.loc \
-jreLoc /usr/java/latest" >&3
SOA_PID = pgrep java
wait $SOA_PID
# Code below this which requires this be completed before execution.
我正在尝试让我的脚本在继续之前等待进程完成。
脚本执行,但不是等待,而是继续,并在脚本完成后运行安装程序。我有其他安装程序需要安装这个部件才能开始自己的进程,因此等待。
我尝试过使用$!等,但由于这件作品是由一个单独的用户执行的,我不知道这是否有效。
感谢您的帮助。
答案 0 :(得分:1)
命令SOA_PID = pgrep java
应该会导致错误。
尝试像这样捕获PID:
SOA_PID=$( pgrep java ) || exit
如果|| exit
未返回值,则pgrep
强制退出,
防止胡言乱语发生。
另一种方法是依靠wait
立即返回,
但最好是明确的。
在函数中使用它时,您可以使用|| return
代替
在情况下。