首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >初始化脚本问题:意外的then,预期的}

初始化脚本问题:意外的then,预期的}
EN

Stack Overflow用户
提问于 2013-01-24 17:51:02
回答 1查看 430关注 0票数 0

我有一个init脚本(运行Debian)来启动serviio一个DLNA服务器。当我去启动这个服务时,我得到了以下错误。任何帮助都将不胜感激。请注意:我对linux/bash/debian非常陌生。

我收到此错误:无效语法:意外,然后在第43行,预期}

使用以下代码:

代码语言:javascript
运行
复制
                    #! /bin/sh
            #
            # /etc/init.d/serviio
            #
            #
            ### BEGIN INIT INFO
            # Provides: serviio
            # Required-Start: $network
            # Required-Stop: $network
            # Default-Start: 3 5
            # Default-Stop: 0 1 2 6
            # Description: Start the serviio DLNA server in headless mode
            ### END INIT INFO

            SERVIIO_HOME="/opt/serviio"
            SERVIIO_DAEMON="serviio.sh"
            SERVIIO_BIN="$SERVIIO_HOME/bin/$SERVIIO_DAEMON"
            SERVIIO_USER="serviio"

            # Source function library.
            . /lib/lsb/init-functions

            RETVAL=0

            check() {
                    # Check that we're a privileged user
                    [ $(id -u) = 0 ] || exit 4

                    # Check if SERVIIO_HOME exists
                    test -d "$SERVIIO_HOME" || exit 5

                    # Check if SERVIIO_BIN is executable
                    test -x "$SERVIIO_BIN" || exit 5
            }

            start() {
                    check

                    echo -n "Starting Serviio DLNA server: "
                    /usr/bin/sudo -u $SERVIIO_USER -H $SERVIIO_BIN -headless &

                    RETVAL=$?
                    if [ $RETVAL -eq 0 ]; then
                        touch /var/lock/serviio
                        log_end_msg 0
                    else
                        log_end_msg 1
                    fi
                    echo
                    return $RETVAL
            }

            stop() {
                    check

                    echo -n "Shutting down Serviio DLNA daemon: "
                    killproc "$SERVIIO_BIN"
                    RETVAL=$?
                    [ $RETVAL -eq 0 ] && rm -f /var/lock/serviio
                    echo
                    return $RETVAL
            }

            restart() {
                    stop
                    start
            }


            case "$1" in
            start)
                    start
                    ;;
            stop)
                    stop
                    ;;
            force-reload)
                    restart
                    ;;
            restart)
                    restart
                    ;;
            condrestart)
                    if [ -f /var/lock/serviio ]; then
                        restart
                    fi
                    ;;
            status)
                    status serviio.sh
                    ;;
            *)
                    echo $"Usage: $0 {start|stop|status|restart|condrestart|force-reload}"
                    RETVAL=2
            esac

            exit $RETVAL
EN

回答 1

Stack Overflow用户

发布于 2013-01-25 13:17:02

我可以运行这个脚本而不会出现语法错误,但是我没有安装serviio。无论如何,我的猜测是$RETVAL不知何故是空的,并且它需要用引号括起来:

代码语言:javascript
运行
复制
if [ "$RETVAL" -eq 0 ]; then

尽管我认为这会抱怨'[‘需要一个一元运算符。

下一件要尝试的事情是一次注释掉部分,方法是在部分中的行前加上"#“,直到您可以缩小问题所在的范围。例如,注释掉整个"start“部分,或者注释掉"check”函数(确保你也注释掉了对它的调用)。这应该有助于缩小范围。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/14498306

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档