Por que obtenho os resultados corretos e um erro neste script bash?

1

Eu sou novo no bash scripting e aprendendo instruções "if then". Quando eu executo o script simples abaixo ele executa e me dá o resultado correto, no entanto, eu ainda recebo um erro. O nome do script é testscript.sh. O erro é o seguinte: "./testscript: line 5: [csh: comando não encontrado]"

Alguém pode dizer o que isso significa?

#! /bin/bash

MY_SHELL="csh"

If ["$MY_SHELL" = "bash"
then
    echo "You seem to like the bash shell."

else

    Then "You don't seem to like the bash shell."

fi
    
por Randy Teer 03.08.2016 / 20:13

2 respostas

10

Vamos analisar essa linha por linha:

#! /bin/bash

MY_SHELL="csh"

Até agora, tudo bem.

If ["$MY_SHELL" = "bash"

Agora, esta linha tem vários erros:

  1. if e não If - o shell é caso sensitivo, então foo e FOO são diferentes
  2. Deve haver um espaço após o caractere [
  3. Você precisa de um ] no final do teste com um espaço anterior.

Isso significa que a linha deve ser mais parecida com if [ "$MY_SHELL" = "bash" ]

then
    echo "You seem to like the bash shell."
else

Estes são bons

    Then "You don't seem to like the bash shell."

Você quer um echo aqui. Lembre-se da diferenciação entre maiúsculas e minúsculas.

fi

O resultado:

#! /bin/bash

MY_SHELL="csh"

if [ "$MY_SHELL" = "bash" ]
then
    echo "You seem to like the bash shell."
else
    echo "You don't seem to like the bash shell."
fi

Editar: assim que você se sentir mais à vontade com scripts de shell, o link é um site útil para validar o material. A saída de erro nem sempre é clara, mas normalmente é boa para apontar erros!

    
por 03.08.2016 / 20:22
1

Você precisaria de um espaço depois de [ e antes de ] , já que os colchetes são realmente comandos! Então:

if [ "$shell" = "bash" ];

Existem outros erros que eu não indiquei, já que este é o que você pediu.

    
por 03.08.2016 / 20:17