我的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...
非常感谢任何帮助。
答案 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
周围的引号。间距也不太重要,但对于可读性很有用。
[[
用于比较文本模式。
作为评论,反引号``被认为已被弃用,因为它们难以阅读,它们被$( ... )
取代。