Linux shell脚本执行挂起

时间:2016-07-29 12:03:38

标签: java linux bash

我准备了一个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结束时。为什么会导致这个问题。

1 个答案:

答案 0 :(得分:1)

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

永远不要将&用于需要用户输入的任务。 &应保留用于后台任务,例如服务或独立维护任务(请注意,在标准行为下,除非使用screen之类的工具,否则后台任务可能仍会在后台运行的父进程中终止它终止了。