Bash 如何储存;哪一个java;将命令转换为变量?

Bash 如何储存;哪一个java;将命令转换为变量?,bash,shell,unix,Bash,Shell,Unix,我需要根据环境制作一个“动态”sh脚本。 在每个环境中,Java都位于不同的位置 我需要做的是将命令“which java”存储到一个变量中,然后在命令中调用该变量,如下所示: var=`which java` nohup $var -Xmx2048m -jar javaProgram.jar $* -d javaProgramResource -re > /nfs/inf/app_storage/logs/service/service_refresh.log 2>&1 &

我需要根据环境制作一个“动态”sh脚本。 在每个环境中,Java都位于不同的位置

我需要做的是将命令“which java”存储到一个变量中,然后在命令中调用该变量,如下所示:

var=`which java`
nohup $var -Xmx2048m -jar javaProgram.jar $* -d javaProgramResource -re > /nfs/inf/app_storage/logs/service/service_refresh.log 2>&1 &
这不管用。当我手动将java路径放入命令时,它可以工作,但不是这样工作的。

像这样尝试:

var=`which java`
nohup $var -Xmx2048m -jar javaProgram.jar $* -d javaProgramResource -re > /nfs/inf/app_storage/logs/service/service_refresh.log 2>&1 &
var=$(哪个java)

参考:


在将值传递给第二个命令之前回显输出。很可能存在一些格式问题。为什么不直接编写
java
,而不是
$var
?只要
java
命令的目录在
PATH
中,它就会被执行。除了您的设计很糟糕(前面的注释是正确的)之外,这个不起作用的语句(没有进一步的解释)是没有用的。如果我把java放在那里,我会变成一个错误消息,说明找不到java命令。。它的位置在不同的环境中,这就是为什么我需要这样做。使用路径。时期这正是你需要的。没有必要重新发明方轮。这不会解决任何问题,因为在本例中,backticks和
$(…)
都是以完全相同的方式理解的。我很接近!我的版本是var=$(“哪个java”),我现在有以下问题。我认为语法有点错误。这是我收到的错误消息:nohup:invalid选项--“X”。Java路径存储在变量中。