bash: erro de sintaxe próximo ao token inesperado 'elif' [duplicado]

2

O fragmento do script de shell é fornecido abaixo

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;

O erro é

OPERATING SYSTEM IS: Linux
: command not found
jobcomp1: line 34: syntax error near unexpected token 'elif'
'obcomp1: line 34: 'elif [ [ $OS == Darwin ] ] ; then
    
por jay 20.08.2016 / 20:57

1 resposta

3

O shell realmente não gosta desses espaços em branco entre os colchetes:

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

Espera algo como

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

ou (melhor)

if [ $ARCH = x86_64 ]  ; then

(não faz sentido tornar um script bash-específico, portanto, o == também se torna = ).

    
por 20.08.2016 / 21:01