1
if [ $DISTRO = "REDHAT"] || [ $DISTRO = "FEDORA"]; then 
    if ! rpm -qa | grep -q glibc-static; then
        $BIN_ECHO -e " Package [glibc-static] not found. Installing.. "
        yum install glibc-static
    elif
        $BIN_ECHO -e " All required packages installed.. "
    fi
elif [ $DISTRO = "DEBIAN"]; then 
    if ! dpkg-query -l glibc; then
        $BIN_ECHO -e " Package [glibc] not found. Installing.. "
        apt-get install glibc
    elif
        $BIN_ECHO -e " All required packages installed.. "
    fi
fi

156 行目: 予期しないトークン `fi' 付近の構文エラー

2 つのステートメントをまとめるにはどうすればよいですか?

4

1 に答える 1

4

]各テストの決勝の前にスペースが必要です。

例えば:

if [ $DISTRO = "REDHAT"] || [ $DISTRO = "FEDORA"]; then

次のいずれかのように書き直す必要があります。

 if [ "$DISTRO" = REDHAT ] || [ "$DISTRO" = FEDORA ]; then

また

if test "$DISTRO" = REDHAT || test "$DISTRO" = FEDORA; then

また、リテラル文字列を引用する理由はありませんが、変数を引用する必要があることに注意してください。

次のこともできます。

if test "$DISTRO" = REDHAT -o "$DISTRO" = FEDORA; then

また

case "$DISTRO" in
REDHAT|FEDORA) ... ;;
DEBIAN) ... ;;
esac
于 2012-10-09T19:15:04.880 に答える