SoF2 shell脚本没有运行

时间:2018-05-21 02:11:25

标签: bash shell

我的shell脚本中有以下代码:

SERVER=`ps -ef | grep -v grep | grep -c sof2ded`
    if ["$SERVER" != "0"]; then
        echo "Already Running, exiting"
        exit
    else
        echo "Starting up the server..."
        cd /home/sof2/
        /home/sof2/crons/start.sh > /dev/null 2>&1
    fi

我做了chmod a+x status.sh

现在我尝试运行脚本,但它返回了这个错误:

./status.sh: line 5: [1: command not found
Starting up the server...

非常感谢任何帮助。

2 个答案:

答案 0 :(得分:0)

您可以尝试更改脚本中的一些内容,如下所示,如果这对您有帮助,请告诉我?(更改后退到$并将[更改为[[代码)

SERVER=$(ps -ef | grep -v grep | grep -c sof2ded)
    if [[ "$SERVER" -eq 0 ]]; then
        echo "Already Running, exiting"
        exit
    else
        echo "Starting up the server..."
        cd /home/sof2/
        /home/sof2/crons/start.sh > /dev/null 2>&1
    fi

答案 1 :(得分:0)

问题在于test命令。 “但是”,我听到你说,“我没有使用test命令”。是的,它也被称为[

if语句语法为if 命令。括号不是if语法的一部分。

命令的参数由空格分隔(标记化),因此:

[ "$SERVER" != "0" ]

需要空格,因为命令是[,然后传递了4个参数(最后一个必须是])。

比较数字的更稳健的方法是使用双括号

(( SERVER == 0 ))

请注意,您不需要$SERVER周围的引号。间距也不太重要,但对于可读性很有用。

[[用于比较文本模式。

作为评论,反引号``被认为已被弃用,因为它们难以阅读,它们被$( ... )取代。