SH linux:语法错误:单词意外
内容导读
互联网集市收集整理的这篇技术教程文章主要介绍了SH linux:语法错误:单词意外,小编现在分享给大家,供广大互联网技能从业者学习和参考。文章包含2203字,纯文字阅读大概需要4分钟。
内容图文
我想知道我在这段代码中做错了什么:
#!/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执行我收到以下错误信息:
Syntax error: word unexpected (expecting “in”)
但在案件命令中,我已经说完了.
任何人都知道如何解决这个错误?
非常感谢!
解决方法:
如此处所述,您的代码在语法上是有效的类似POSIX的shell代码,您可以在shellcheck.net验证(但是,由于不引用您的变量引用(例如,echo $PID_PATH_NAME),这将警告您可能不需要的副作用回声“$PID_PATH_NAME”),但不适用于案例陈述中的$1 [1]
).
类似地,复制你的问题中的代码并将其粘贴到一个新文件中并使用sh on Ubuntu(即Dash)来执行它,也可以正常工作.
因此 – 除非你的sh不是它应该是什么 – 我怀疑你的shell文件中有“奇怪的”字符,例如标准ASCII范围之外的Unicode空格,它可能看起来像普通的空格,但不是; Unicode不间断空格字符(U_00A0,UTF8编码为0xC2 0xA0)就是一个例子.
要查找此类字符,请运行以下命令(其中脚本代表您的脚本):
LC_ALL=C cat -e script
并寻找M-和^< letter>输出中的序列;例如,上述不间断空间显示为M-BM-.
[1]双重引用案例陈述的论据并没有伤害,但没有必要.
虽然不带引号的参数/变量引用在类似POSIX的shell中的大多数位置都是分词和路径名扩展的,但case是一个奇怪的例外.
下面演示了这一点,并适用于所有主要的POSIX类shell(dash,bash,ksh,zsh):
$sh -c 'case $1 in "foo *") echo "match";; *) echo "nomatch"; esac' - 'foo *'
match
文字参数foo *匹配case分支,即使$1是未引用的.
(与典型情况(例如,echo $1)形成对比,其中$1的值将受到分词和路径名扩展(globbing)的影响.)
内容总结
以上是互联网集市为您收集整理的SH linux:语法错误:单词意外全部内容,希望文章能够帮你解决SH linux:语法错误:单词意外所遇到的程序开发问题。 如果觉得互联网集市技术教程内容还不错,欢迎将互联网集市网站推荐给程序员好友。
内容备注
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 gblab@vip.qq.com 举报,一经查实,本站将立刻删除。
内容手机端
扫描二维码推送至手机访问。