gpt4 book ai didi

java - Linux shell 脚本执行挂起

转载 作者:太空宇宙 更新时间:2023-11-04 04:59:06 25 4
gpt4 key购买 nike

我准备了一个 shell 脚本来运行 Java 文件。我已经给出了 Java 路径、类路径和依赖项。我正在根据条件执行该文件。

以下是代码片段。代码开始执行,但控件并未从提示符中出来。

CMD=""$JRE_BIN_PATH/java" $SP -cp $CP org.aditya.test.MainClass "$@""

if [ "$1" == 'server' ] && [ "$2" == 'start' ]
then
$CMD &
elif [ "$1" == 'process' ]
then
$CMD &
else
$CMD
fi

ifelif 执行时,命令挂起,因为它在末尾使用了“&”。但是如果控制转到其他(没有“&”)控制立即出来。我删除了“&”,一切正常。我的问题是,CMD末尾的“&”有什么用?为什么它会导致问题。

最佳答案

基本上,& 是“在后台运行”的 Linux shell 标记。任务将立即 fork 然后返回。它不会访问父进程的标准输入和输出。

您绝对不应该将 & 用于需要用户输入的任务。 & 应保留用于后台任务,例如服务或独立维护任务(请注意,在标准行为下,除非您使用 screen 等工具,否则当后台任务的父进程终止时,后台任务可能仍会终止。

关于java - Linux shell 脚本执行挂起,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38658381/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com