Erro de bash: Aninhando 'if .. elif' dentro de 'for .. in' construct

2

Quando executo o código abaixo:

IFS=$'\n'
for line in 'more extensions.txt' do 
    if  grep '[219..223]' ${line:96:4} ; then
        ...
    else
        ...
    fi
done

Continuo recebendo o erro:

bash: syntax error near unexpected token 'if'

Ajuda, alguém?

    
por Buckocee 11.10.2012 / 21:57

1 resposta

2

Você perdeu um ponto-e-vírgula ou uma nova linha antes de do .

Ambos os scripts a seguir funcionarão.

IFS=$'\n'
for line in 'more extensions.txt' ; do
        if  grep '[219..223]' ${line:96:4} ; then
                echo "1"
        else
                echo "2"
        fi
done
IFS=$'\n'
for line in 'more extensions.txt'
do
        if  grep '[219..223]' ${line:96:4} ; then
                echo "1"
        else
                echo "2"
        fi
done
  

Observação: Seu script também está sem uma shebang . É uma prática melhor incluir um na primeira linha do seu script.

     

Isso permite que você chame seu script usando ./script.sh se o bit executável do arquivo estiver definido, além de sh script.sh ou bash script.sh

    
por SirCharlo 11.10.2012 / 22:04