Questão de Programação — Linguagens de programação — VUNESP 2026
- Código
- gp003721
- Banca
- VUNESP
- Órgão
- UNESP
- Ano
- 2026
- Cargo
- V - - Analista de Informática I - Área de Atuação: Desenvolvimento de Sistemas - São Paulo
- A1
- B1 2
- C3 4 5
- D2 3 4 5
- E1 2 3 4 5
GabaritoD — 2 3 4 5
Gabarito: letra D — a conta chega a 2 3 4 5 — alternativa D.
O comando read é usado em shell script para ler uma linha da entrada padrão (que pode vir de um teclado, de um arquivo ou de outro comando via pipe) e dividir essa linha em campos, usando como separador o espaço, a tabulação ou a nova linha. Cada campo é atribuído a uma variável na ordem em que as variáveis são listadas após o read.
A regra central do read é: se você lista mais de uma variável, a primeira recebe o primeiro campo, a segunda recebe o segundo campo, e assim por diante, mas a ÚLTIMA variável recebe TODOS os campos restantes, não apenas o último. Isso significa que, com read a b, a variável a fica com o primeiro campo e a variável b fica com todos os campos do segundo em diante, juntos, separados por espaços.
Esta questão testa exatamente essa regra: o echo produz uma única linha com cinco campos, e o read a b distribui esses campos entre a e b. O laço while executa uma vez para cada linha lida, e como só há uma linha, o bloco roda uma única vez, imprimindo o conteúdo de b.
comando: echo 1 2 3 4 5 | while read a b; do echo $b; done
O que queremos: o valor impresso no terminal
O comando echo 1 2 3 4 5 simplesmente escreve na saída padrão a string '1 2 3 4 5', que é uma única linha com cinco campos separados por espaços. Essa linha será a entrada para o while.
Pensar que o echo gera cinco linhas separadas, mas ele gera uma única linha com cinco campos.
O pipe envia a linha para o while, e o comando read a b lê essa linha. O read divide a linha em campos usando espaços como separadores e atribui o primeiro campo à variável a e todos os campos restantes à variável b.
Por que esta fórmula: A regra do read é que a última variável recebe tudo o que sobrar. Como temos cinco campos e apenas duas variáveis, a recebe o primeiro campo e b recebe os quatro restantes.
a = '1', b = '2 3 4 5'
Achar que b recebe apenas o segundo campo, mas ele recebe todos os campos restantes.
O while read a b executa o bloco do...done uma vez para cada linha lida. Como a entrada tem apenas uma linha, o bloco roda uma única vez. Dentro do bloco, o comando echo $b imprime o conteúdo da variável b.
Pensar que o while itera sobre cada campo, mas ele itera sobre cada linha.
Resposta: 2 3 4 5 — alternativa D
Link permanente: /questoes/gp003721