以下是我的腳本,每次運行時都會進入其他部分。當我運行TEST2EVAL命令它給了我1
unix腳本有什麼問題
#!/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
以下是我的腳本,每次運行時都會進入其他部分。當我運行TEST2EVAL命令它給了我1
unix腳本有什麼問題
#!/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
在爲了節省命令的輸出在一個變量,你必須在其反引號命令(`
),而不是單引號('
)。因此,你的腳本的第二行更改爲:
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`
更好但是,請改用TEST2EVAL=$(ps auxf | grep some.jar | grep -v grep | wc -l)
。它更清晰,支持所有與POSIX兼容的shell,並且可以在需要時更容易地嵌套。
完美。謝謝 – sssV 2014-10-01 17:43:57
假設你正在試圖找出是否有任何過程與some.jar
對他們的命令行運行,你可能想:
if pgrep -f some.jar; then
echo running;
else
echo not running;
fi
得到它。謝謝 – sssV 2014-10-01 17:41:42