Ajuda do bash If Statment

0

Eu tenho isso se declaração:

if $type = 1 then
 date +%s | md5 | base 64 | head -c $length >> $name.txt
        elseif $type = 2 then
        date +%s | shasum | base 64 | head -c $length >> $name.txt
                elseif $type = 3 then
                openssl rand -base64 $length  >> $name.txt
fi

e continuo recebendo o erro:

./password: line 32: syntax error near unexpected token `fi'
./password: line 32: `fi'

provavelmente sou eu fazendo algo bobo, mas não consigo descobrir onde estou errado!

Desde já, obrigado!!

Dominic
fonte
Sim, você está fazendo algo bobo: é elif, não elseif.
kos
2
Possível duplicado de Bash - 'if': comparar duas cordas
Muru

Respostas:

-1

Sempre organize seu código e use -eq sempre que executar condições com números inteiros

if [ $type -eq 1 ]
        then 
     date +%s | md5 | base 64 | head -c $length >> $name.txt 

   elif [ $type -eq 2 ]
       then 
           date +%s | shasum | base 64 | head -c $length >> $name.txt 

   elif [ $type -eq 3 ]
     then 
         openssl rand -base64 $length >> $name.txt 

fi
Shantanu Bedajna
fonte
2
Embora o código esteja correto, uma boa resposta deve explicar por que o código em questão não funcionou e esse código funciona.
Muru
Se a minha resposta foi útil escolher como resposta dar um voto .E seu bem-vindos
Shantanu Bedajna