以下是我的脚本,每次我运行它都会进入其他部分。当我运行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
答案 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支持它更加清晰,并且在必要时可以更容易嵌套。