debian [duplicate]的简单初始化脚本语法错误

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了debian [duplicate]的简单初始化脚本语法错误相关的知识,希望对你有一定的参考价值。

这个问题在这里已有答案:

似乎冒号应该出现在我正在阅读的教程中,但它告诉我要删除它们?

/etc/init.d/uwsgi: 27: /etc/init.d/uwsgi: Syntax error: ";;" unexpected

这是我的代码:

#!/bin/sh
### BEGIN INIT INFO
# Provides:          uwsgi
# Required-Start:    $local_fs $remote_fs $network
# Required-Stop:     $local_fs $remote_fs $network
# Default-Start:     2 3 4 5
# Default-Stop:      0 1 6
# Description:       This script manages uWSGI.
### END INIT INFO

DAEMON=/var/www/app/venv/bin/uwsgi
PIDFILE=/var/run/uwsgi.pid
DAEMON_ARGS="--ini /var/www/app/conf/uwsgi/app.ini --pidfile /var/run/uwsgi.pid"

. /lib/init/vars.sh
. /lib/lsb/init-functions

case "$1" in
  start)
  echo "Starting"
  start-stop-daemon --start --quiet --pidfile $PIDFILE --exec $DAEMON --test > /dev/null 
    || return 1
  start-stop-daemon --start --quiet --pidfile $PIDFILE --exec $DAEMON -- 
    $DAEMON_ARGS 1> /dev/null 2>&1 
    || return 2
  esac
  ;;
  stop)
  echo "Stopping"
  start-stop-daemon --stop --quiet --retry=QUIT/30/KILL/5 --pidfile $PIDFILE --name uwsgi
  RETVAL="$?"
  [ "$RETVAL" = 2 ] && return 2
  start-stop-daemon --stop --quiet --oknodo --retry=0/30/KILL/5 --exec $DAEMON
  [ "$?" = 2 ] && return 2
  rm -f $PIDFILE
  return "$RETVAL"
  esac
  ;;
  status)
  status_of_proc "$DAEMON" "uwsgi" && exit 0 || exit $?
  ;;
  reload)
  echo "Reloading"
  start-stop-daemon --stop --signal 1 --quiet --pidfile $PIDFILE --name uwsgi
  return 0
  ;;
  *)
  echo "Usage: /etc/init.d/uwsgi {start|stop|status|reload|force-reload}" >&2
  exit 3
  ;;
esac
答案

case语句的正确语法是:

case expression in
    pattern1)
    statements
    ;;
    pattern2)
    statements
    ;;
esac

即最后只用一个esac关闭。其他任何东西都会导致语法错误。

您可以将脚本提供给ShellCheck,它会进行在线脚本检查,并指出语法错误的位置(您可以在此处粘贴的输入中突出显示)。

以上是关于debian [duplicate]的简单初始化脚本语法错误的主要内容,如果未能解决你的问题,请参考以下文章

51单片机中DS1302芯片的引脚配置原理是啥?

Debian 9 的系统初始化脚本

使页脚留在底部[重复]

如何使页脚居中[重复]

学习单片机的步骤 捷配pcb

BeagleBone Black 开机初始化操作