我正在构建一个脚本,以便在设置服务器时让我的生活更轻松。
我对这一行有疑问:
# 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.
我试图让我的脚本等待该过程完成后再继续。
脚本会执行,但不会等待,而是继续执行,并且安装程序会在脚本完成后运行。我还有其他安装程序需要在开始自己的进程之前安装此部分,因此需要等待。
我尝试过使用 $!等等,但由于这一部分是由单独的用户执行的,我不知道这是否可行。
感谢您的帮助。
最佳答案
命令SOA_PID = pgrep java
应该会导致错误。
尝试像这样捕获 PID:
SOA_PID=$( pgrep java ) || exit
|| exit
如果 pgrep
没有返回值则强制退出,
防止后续发生无意义的事情。
另一种方法是依靠 wait
立即返回,
但最好明确一点。
在函数中使用它时,您可以使用 || return
相反,取决于
视具体情况而定。
关于linux - 无法让 BASH 脚本等待 PID,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40537236/