3
./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
}

チェックコードが間違っているのですか?それとも、私が自分の機能をどのように行っているのですか?関数が最初に来る必要がありますか?

また

オペレーティングシステムの配布を確認して設定するためのより良い方法はありますか?

4

2 に答える 2

1

関数を呼び出すには、()(他のシェル コマンドと同じように呼び出します) を省略します。

CHECK_architecture
CHECK_distro

また、問題を回避するために、関数を使用する前に関数を宣言することもできます。

于 2012-10-08T19:41:13.117 に答える
1

関数を呼び出すときは括弧を使用せず、呼び出す前に関数を定義してください。

例えば:

foo() { # define foo; }
foo 1 2 3 # call foo with 3 arguments
于 2012-10-08T19:41:47.550 に答える