Qual resultado vamos encontrar na variável $LOG ao final da ...
Avalie o shell script abaixo e responda à questão.
#!/bin/bash
i=1
LOG=logfile
while [ $i -lt 3 ]
do
echo $i >> $LOG
i=$(($i + 1))
done
Gabarito comentado
Confira o gabarito comentado por um dos nossos professores
Tema central da questão: Manipulação de variáveis e arquivos em shell script, envolvendo laço while e redirecionamento de saída.
O ponto-chave desta questão é entender o que ocorre com a variável $LOG durante todo o script. Em shell script, uma variável recebe um valor textual, sendo acessada por $variavel. Observe:
LOG=logfile
Logo, $LOG contém apenas a string "logfile" – e esse valor não muda em nenhum momento durante o script.
O loop while [ $i -lt 3 ] executa enquanto i for menor que 3. Em cada iteração:
- echo $i >> $LOG — adiciona o valor de i ao final do arquivo chamado "logfile".
- i é incrementado (i=1 vira i=2, depois i=3 e aí o laço termina).
Pegadinha: A questão pede o valor da variável $LOG e não o conteúdo do arquivo!
Justificativa da alternativa correta (D):
Ao final, $LOG permanece “logfile”. As linhas echo $i >> $LOG só escrevem no arquivo cujo nome está na variável, mas não alteram a variável em si. Isso está de acordo com a teoria fundamental das variáveis em Shell e seus operadores de redirecionamento (referência: Shell Script Profissional, Julio Neves).
Análise das alternativas incorretas:
- A) 2: Último valor escrito no arquivo. Não é o valor de $LOG.
- B) 3: Valor de i após o loop, confunde variável de controle com a variável pedida.
- C) 1: Valor inicial de i, não tem ligação.
- E) 123: Pode sugerir a concatenação dos valores escritos, mas o conteúdo real do arquivo seria:
1
2
Não tem relação com $LOG.
Portanto, a alternativa D) logfile é a única correta.
Estratégia de prova: Reforce sempre a diferença entre “conteúdo de variável” e “conteúdo de arquivo”. Fique atento ao que a questão pede – uma confusão comum é responder sobre o efeito do script, não sobre a definição da variável.
Gostou do comentário? Deixe sua avaliação aqui embaixo!
Clique para visualizar este gabarito
Visualize o gabarito desta questão clicando no botão abaixo