web-dev-qa-db-ja.com

bash:予期しないトークン `Elif 'に近い構文エラー

シェルスクリプトスニペットを以下に示します

if [[ $OS == Linux ]] ; then

    LINUX_FC=gfortran
#
#   set 32 or 64 Bits executable
#
    Arch=`uname -m`
    echo "PROCESSOR IS: $Arch"
    if [ [ $Arch == x86_64 ] ]  ; then
        BITS=SIXTYFOUR;
    else
        BITS=THIRTYTWO;
    fi

Elif [[ $OS == Darwin ]] ; then

        DARWIN_FC=gfortran;

else
    BITS=THIRTYTWO;
fi;

エラーは

OPERATING SYSTEM IS: Linux
: command not found
jobcomp1: line 34: syntax error near unexpected token `Elif'
'obcomp1: line 34: `Elif [ [ $OS == Darwin ] ] ; then
3
jay

シェルは、角かっこの間の空白を本当に嫌います:

if [ [ $Arch == x86_64 ] ]  ; then

それはのようなものを期待しています

if [[ $Arch == x86_64 ]]  ; then

または(より良い)

if [ $Arch = x86_64 ]  ; then

(スクリプトをbash固有にすることには意味がないため、===になります)。

3
Thomas Dickey