Observe o conteúdo do arquivo “~/imprime.tcsh” descrito a se...

Próximas questões
Com base no mesmo assunto
Q359097 Sistemas Operacionais
Observe o conteúdo do arquivo “~/imprime.tcsh” descrito a seguir

#!/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,
Alternativas

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