Você precisa dar aspas duplas em $result
em vez de aspas simples; caso contrário, elas não serão expandidas.
[ '$result' == 'yes' ]
nunca será avaliado como verdadeiro porque está tentando comparar o literal $result
com o literal yes
.
Além disso, como Kusalananda aponta; o operador ==
é para construções de teste bash [[
, enquanto o operador =
é para construções de teste padrão (POSIX) [
.
Portanto, você deve alterar essa linha para: [ "$result" = 'yes' ]
Outra boa ferramenta a ser conhecida é a set
builtin e sua -x
switch que pode ser usada para rastrear seus scripts. Se você adicionar set -x
ao topo do seu script original e executá-lo, verá o seguinte impresso:
+ read -e -i no -p 'Install? ' result
Install? yes
+ '[' '$result' == yes ']'
Como você pode ver, está tentando comparar '$ result' a 'yes'. Quando citada corretamente, você não verá a variável $result
, mas a expansão é assim:
+ read -e -i no -p 'Install? ' result
Install? yes
+ '[' yes == yes ']'
+ subs=('one' 'two')
+ declare -a subs
+ for sub in '"${subs[@]}"'
+ echo one
one
+ for sub in '"${subs[@]}"'
+ echo two
two
Sempre que você estiver batendo a cabeça contra a parede com um script, você deve ativar set -x
e rastrear o que está fazendo e onde está errado.