Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/shell/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 为什么nohup在这种情况下不起作用?_Java_Shell - Fatal编程技术网

Java 为什么nohup在这种情况下不起作用?

Java 为什么nohup在这种情况下不起作用?,java,shell,Java,Shell,以下是start.sh的内容: cmd=nohup java-cp lib/*:../common/lib/*-server-Dlogback.configurationFile=cfg/logback.xml-Xrunjdwp:transport=dt_socket,server=y,suspend=n,address=30002 simulator4j.SimulateEngine-config cfg/config.pb-properties/& $cmd 当我运行./start.sh时,

以下是start.sh的内容:

cmd=nohup java-cp lib/*:../common/lib/*-server-Dlogback.configurationFile=cfg/logback.xml-Xrunjdwp:transport=dt_socket,server=y,suspend=n,address=30002 simulator4j.SimulateEngine-config cfg/config.pb-properties/& $cmd
当我运行./start.sh时,它被阻塞,直到我输入ctrl+c。如果我直接在终端中输入cmd,它工作得很好

您可以使用eval命令在bash中执行字符串:

cmd=nohup java-cp lib/*:../common/lib/*-server-Dlogback.configurationFile=cfg/logback.xml-Xrunjdwp:transport=dt_socket,server=y,suspend=n,address=30002 simulator4j.SimulateEngine-config cfg/config.pb-properties/& eval$cmd
不要将命令放在引号中。这就是为什么&无法作为命令进行解析的原因delimiter@Aaron如果我真的需要把它放在引号里,有什么解决办法吗?为什么你认为你需要把它放在引号里?我相信有更好的解决方案。他希望先将命令作为字符串,然后再将该字符串作为命令执行。在这个场景中,引号是允许的。@Titulum我在问为什么他想要它作为文本来显示它?因为我可以提供一个替代方案,不需要将命令作为字符串处理并使用eval执行它。