【发布时间】:2016-10-18 03:47:49
【问题描述】:
我想知道我在这段代码中做错了什么:
#!/bin/sh
SERVICE_NAME=neocloud
PATH_TO_JAR=/etc/neocloud/cloud.jar
PID_PATH_NAME=/tmp/neocloud-pid
case $1 in
start)
echo "Starting $SERVICE_NAME ..."
if [ ! -f $PID_PATH_NAME ]; then
nohup java -jar $PATH_TO_JAR /tmp 2>> /dev/null >> /dev/null &
echo $! > $PID_PATH_NAME
echo "$SERVICE_NAME started ..."
else
echo "$SERVICE_NAME is already running ..."
fi
;;
stop)
if [ -f $PID_PATH_NAME ]; then
PID=$(cat $PID_PATH_NAME);
echo "$SERVICE_NAME stoping ..."
kill $PID;
echo "$SERVICE_NAME stopped ..."
rm $PID_PATH_NAME
else
echo "$SERVICE_NAME is not running ..."
fi
;;
restart)
if [ -f $PID_PATH_NAME ]; then
PID=$(cat $PID_PATH_NAME);
echo "$SERVICE_NAME stopping ...";
kill $PID;
echo "$SERVICE_NAME stopped ...";
rm $PID_PATH_NAME
echo "$SERVICE_NAME starting ..."
nohup java -jar $PATH_TO_JAR /tmp 2>> /dev/null >> /dev/null &
echo $! > $PID_PATH_NAME
echo "$SERVICE_NAME started ..."
else
echo "$SERVICE_NAME is not running ..."
fi
;;
esac
通过sh 执行我收到以下错误消息:
语法错误:单词意外(预期为“in”)
但是在case 命令中我有in 字。
有人知道如何修复这个错误吗?
非常感谢!
【问题讨论】:
-
$1的值是多少? -
$1 是第一个命令行参数
-
如果你减少到this,这会给出错误吗?
-
在未来,顺便说一句,尽量遵守stackoverflow.com/help/mcve 的指导方针——代码示例应该最少,包含能够重现相同内容的最少代码量问题,并且 verifiable - 意味着您应该将其复制并粘贴回您的问题中,尝试运行它,并确保这仍然会导致错误(它会捕获隐藏字符之类的东西) .
-
...另外,理想情况下,shellcheck.net 发现的错误应该在此处提出问题之前修复。
标签: linux bash ubuntu ubuntu-14.04 sh