语法错误附近的意外令牌

./csf_install.sh: line 30: syntax error near unexpected token `CHECK_distro' ./csf_install.sh: line 30: `CHECK_distro()' 

我的代码:

  if [ "$(whoami &2>/dev/null)" != "root" ] && [ "$(id -un &2>/dev/null)" != "root" ] ; then $BIN_ECHO " must be root to run this script " exit 1 else $BIN_ECHO -e " permission check passed " fi CHECK_architecture() CHECK_distro() ... CHECK_architecture() { architecture=`uname -m` if [ "$architecture" != "x86_64" ] && [ "$architecture" != "ia64" ]; then architecture="x86" else architecture="x86_64" fi } CHECK_distro() { DISTRO=""; if [ `uname -r | egrep '(6.2-RELEASE|6.1-RELEASE|5.5-RELEASE|6.1-STABLE|5.4-RELEASE|6.0-RELEASE|5.3-RELEASE|4.10-RELEASE|4.11-RELEASE)'` ]; then DISTRO="FreeBSD"; $BIN_ECHO " System is running FreeBSD" elif [ -f /etc/debian_version ]; then $BIN_ECHO " System is running Debian Linux" DISTRO=DEBIAN; elif [ -f /etc/SuSE-release ]; then $BIN_ECHO " System is running SuSE Linux" DISTRO=SUSE; elif [ -f /etc/fedora-release ]; then $BIN_ECHO " System is running Fedora Linux" DISTRO=FEDORA; elif [ -f /etc/redhat-release ]; then $BIN_ECHO " System is running Red Hat Linux" DISTRO=REDHAT; else $BIN_ECHO -e " no supported distribution found running " exit 1 fi } 

是我的检查代码是错的? 或者,我是如何做我的function? 这些function需要先来吗?

有没有更好的方法来检查和设置操作系统的分布?

要调用函数,请关闭() (您可以像调用其他shell命令一样调用它们):

 CHECK_architecture CHECK_distro 

在使用它们之前,您可能还需要声明这些功能以避免任何麻烦。

调用函数时不要使用括号,在调用函数之前定义函数。

例如:

 foo() { # define foo; } foo 1 2 3 # call foo with 3 arguments