无法获取BASH脚本等待PID

时间:2016-11-10 21:23:06

标签: linux bash

我正在构建一个脚本,以便在设置服务器时让我的生活更轻松。

我遇到问题:

# 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. 

我正在尝试让我的脚本在继续之前等待进程完成。

脚本执行,但不是等待,而是继续,并在脚本完成后运行安装程序。我有其他安装程序需要安装这个部件才能开始自己的进程,因此等待。

我尝试过使用$!等,但由于这件作品是由一个单独的用户执行的,我不知道这是否有效。

感谢您的帮助。

1 个答案:

答案 0 :(得分:1)

命令SOA_PID = pgrep java应该会导致错误。

尝试像这样捕获PID:

SOA_PID=$( pgrep java ) || exit

如果|| exit未返回值,则pgrep强制退出, 防止胡言乱语发生。 另一种方法是依靠wait立即返回, 但最好是明确的。

在函数中使用它时,您可以使用|| return代替 在情况下。