Dado o programa bash abaixo, #!/bin/bash a=12 b=a+15 echo ${b+20} assinale a opção que mostra a saída correta do programa após sua execução.
- A)0.
Errada, porque 0 nao e o resultado da expansao ${b+20} neste caso.
- B)15.
Errada, porque 15 nao aparece de nenhuma operacao aritmetica aqui; b recebeu uma string literal.
- C)20.
Certa, porque ${b+20} devolve 20 quando b esta definida e nao vazia.
- D)32.
Errada, porque 32 seria um resultado de soma, mas o script nao executa conta aritmetica.
- E)47.
Errada, porque 47 nao tem relacao com a expansao usada no echo.
Gabarito: C
Em Bash, nem toda linha com cara de conta realmente faz conta. Aqui, a linha b=a+15 nao soma nada: ela apenas atribui ao nome b a string literal "a+15". Em shell script, para fazer operacao aritmetica, voce precisaria de algo como b=$((a+15)). O ponto decisivo esta em echo ${b+20}. Essa forma nao usa o valor de b para imprimir, e sim a expansao de parametro ${variavel+palavra}. Ela significa: se a variavel estiver definida e nao estiver vazia, substitua por "palavra"; se nao estiver, substitua por nada. Como b foi definido na linha anterior, ${b+20} vira 20, independentemente de o conteudo de b ser "a+15". Por isso, a saida correta e 20, que corresponde ao gabarito C. Resumo de prova: em Bash, escrever a=12 e b=a+15 nao faz matematica automaticamente. A banca gosta dessa pegadinha para testar se voce sabe diferenciar atribuicao de string, expansao de variavel e expansao aritmetica.