Observe o conteúdo do arquivo “~/imprime.tcsh” descrito a se...
#!/bin/tcsh
set x=$1
set z=$2
shift
foreach y ($*)
echo -n $y
end
echo $z$x
Considerando que o usuário atual possua permissão para executar esse arquivo, ao inserir o comando “~/imprime.tcsh 1 2 3 4 5” em um terminal baseado em Unix, será apresentada, como resultado,
Gabarito comentado
Confira o gabarito comentado por um dos nossos professores
Gabarito: Alternativa A
Vamos analisar a questão com cuidado para entender por que a alternativa A está correta.
O script “~/imprime.tcsh” está escrito na shell tcsh, uma variante do C shell (csh). O conteúdo do script é o seguinte:
#!/bin/tcsh
set x=$1
set z=$2
shift
foreach y ($*)
echo -n $y
end
echo $z$x
Vamos decompor o script linha por linha:
1. #!/bin/tcsh
: Indica que o script deve ser executado usando o interpretador tcsh.
2. set x=$1
: Atribui o primeiro argumento passado ao script (no caso, '1') à variável x
.
3. set z=$2
: Atribui o segundo argumento passado ao script (no caso, '2') à variável z
.
4. shift
: Remove o primeiro argumento da lista de argumentos ($1), então os novos $1, $2, $3, etc., são agora '2', '3', '4', '5', respectivamente.
5. foreach y ($*)
: Inicia um loop que itera sobre todos os argumentos restantes (2, 3, 4, 5).
6. echo -n $y
: Para cada iteração do loop, imprime o valor de y
sem adicionar uma nova linha.
7. end
: Finaliza o loop foreach.
8. echo $z$x
: Após o loop, imprime os valores de z
e x
seguidos por uma nova linha.
Agora, vamos ver o que acontece quando o usuário executa ~/imprime.tcsh 1 2 3 4 5
:
1. Variáveis iniciais:
x = 1
z = 2
2. Após shift
:
$* = "2 3 4 5"
3. Execução do loop:
O comando echo -n $y
imprime "2 3 4 5" sem espaços.
4. Após o loop:
O comando echo $z$x
imprime "21".
Portanto, a saída completa é 234521.
Isso nos leva a concluir que a alternativa correta é A - a sequência numérica 234521.
Se precisar de mais ajuda ou quiser explorar outros tópicos, estou à disposição!
Clique para visualizar este gabarito
Visualize o gabarito desta questão clicando no botão abaixo
Comentários
Veja os comentários dos nossos alunos
#!/bin/tcsh -----> cria um bash de nome tcsh
set x=$1 -----> atribui o primeiro parâmetro (no caso, 1)
set z=$2 -----> atribui o segund parâmetro (no caso, 2)
shift -----> remove o primeiro parâmetro da fila de parâmetros
foreach y ($*) -----> cria laço (itera nos parâmetros, para cada um, atribui à variavel y)
echo -n $y -----> imprime $y sem quebrar linha (-n)
end -----> fim do laço
echo $z$x -----> imprime as variáveis atribuídas no inicio (2 e 1)
Clique para visualizar este comentário
Visualize os comentários desta questão clicando no botão abaixo