unix脚本出了点问题

时间:2014-10-01 17:33:47

标签: bash unix

以下是我的脚本,每次我运行它都会进入其他部分。当我运行TEST2EVAL命令时,它会给我1

#!/bin/sh
TEST2EVAL='ps auxf | grep some.jar | grep -v grep | wc -l'
if [ "$TEST2EVAL" = 1 ]
then
java -jar /path/to/jar &
else
echo "Running"
fi

3 个答案:

答案 0 :(得分:3)

假设您正在尝试查找是否有任何进程在其命令行上使用some.jar运行,您可能需要:

if pgrep -f some.jar; then
    echo running;
else
    echo not running;
fi

答案 1 :(得分:1)

为了将命令的输出保存在变量中,您必须将命令括在反引号(`)中,而不是单引号(')。因此,将脚本的第二行更改为:

TEST2EVAL=`ps auxf | grep some.jar | grep -v grep | wc -l`

答案 2 :(得分:1)

您使用错误的引号进行命令替换:不是单引号:

TEST2EVAL='ps auxf | grep some.jar | grep -v grep | wc -l'

但反引号:

TEST2EVAL=`ps auxf | grep some.jar | grep -v grep | wc -l`

更好的是,请改用TEST2EVAL=$(ps auxf | grep some.jar | grep -v grep | wc -l)。所有与POSIX兼容的shell支持它更加清晰,并且在必要时可以更容易嵌套。