Shell脚本:语法错误:单词意外(期望“in”)

4

我查看了一些网站并检查了case命令的语法,但没有帮助。 我的错误在哪里?

#!/bin/sh
USER="user"
DIR="/linktodirectory"
###### script ######
case $1 in

正如您在上面看到的,我有一个“in”在那里。
start)
su $USER -c "${DIR}/file start"
;;
stop)
su $USER -c "${DIR}/file stop"
;;
restart)
su $USER -c "${DIR}/file restart"
;;
status)
su $USER -c "${DIR}/file status"
;;
*)
echo "Usage: {start|stop|restart|status}" >&2
exit 1
;;
esac
exit 0

我正在使用64位的Ubuntu 16.04。


2
您的脚本文件可能包含DOS行结尾符,这意味着解析器在期望"in"时看到了"in\r"。 - chepner
2个回答

1
我最初怀疑是文件编码问题。
起初,你的语法看起来没问题...至少报错所在行。
你可以将带有双引号的行更改为大写字母。
如果问题仍然存在,请确保检查文件编码。

对我来说,这是一个DOS换行问题。(不确定是否算作编码问题。) - mwfearnley

0

你的第一个参数 $1 应该用双引号括起来。只有这样才能成为 case 语句的参数。

case "$1" in

1
紧跟着关键字 case 的单词不会被分割或路径扩展;引号不是必需的。 - chepner

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接