Você precisa de espaços em torno do ==
. Caso contrário, você passará a string "$choice"==1
para if
em vez de comparar $choice
para 1
. Quando [
recebe uma string, ela será avaliada como verdadeira enquanto a string não estiver vazia:
$ foo="bar"; [ $foo ] && echo true
true
$ foo=""; [ "$foo" ] && echo true ## echoes nothing
Fora dos colchetes test
, na ausência de espaço, a variável seria atribuída a =1
. Para ilustrar:
$ f==3
$ echo $f
=3
$ [ 10==12 ] && echo yes
yes
Como você pode ver acima, f==3
define a variável $f
to =3
.
Portanto, no bloco if
, o que está sendo testado é uma cadeia não vazia que sempre é avaliada como true e a if
é executada. Isso funcionaria:
if [ "$choice" == "1" ]
then
baseinstall
fi
Além disso, =
ou ==
comparação de string no bash. Você quer comparação aritmética:
if [ "$choice" -eq "1" ]
then
baseinstall
fi