Considerando o shell script apresentado na figura acima, jul...

Próximas questões
Com base no mesmo assunto
Q113815 Programação
Considerando o shell script apresentado na figura acima, julgue os itens a seguir.
Esse programa, escrito para Bourne Again Shell, se executado corretamente até o seu final, calcula a média dos números apresentados como argumentos na linha de comando.
Alternativas

Comentários

Veja os comentários dos nossos alunos

Correto. É isso mesmo que o programa faz. Há a possíbilidade de erro se o usuário não informar pelo menos dois números para cálcular a média dos parâmetros informados.
Correto, analisando as principais linhas:

Linha 04)  $# : recebe quantos argumentos foram passados no script;
Linha 05) se for menos do que 2 argumentos, emite algumas mensagens dando exemplo de como deveria ser a linha de comando e depois finaliza o script;
Linha 12) Executa um loop jogando os argumentos passados pelo script ($*), ou seja, os números que vc passou na linha de comando;
Linha 14) Soma cada parametro que foi passado pela linha de comando
Linha 17) a variável AVG recebe a divisão da soma dos argumentos pela quantidade deles, ou seja, recebe a média dos valores.
Linha 18) Imprime na tela a média.

É isso pessoal, abraços!

Configuração Inicial e Variáveis

#!/bin/bash

Conhecido como Shebang. Avisa ao sistema operacional que este arquivo deve ser interpretado e executado pelo shell bash localizado em /bin/bash.

avg=0

Inicializa a variável avg (que guardará a média final) com o valor 0.

temp_total=0

Inicializa a variável temp_total (que acumulará a soma dos números) com o valor 0.

number_of_args=$#

A variável especial $# armazena o número total de argumentos passados na execução (ex: se você rodar ./script.sh 10 20 30, $# será 3). Esse valor é guardado em number_of_args.

Validação da Entrada (Bloco if)

if [ $# -lt 2 ] ; then

Testa se o número de argumentos ($#) é menor que 2 (-lt significa less than). O script exige no mínimo 2 números para calcular uma média.

echo -e ...

Exibe mensagens de erro e instrução de uso ("Sintaxe: ... Exemplo: ..."). O parâmetro -e permite interpretar caracteres especiais de formatação como \n (quebra de linha) e \t (tabulação).

exit 1

Encerra imediatamente a execução do programa com código de erro 1, caso o usuário tenha passado menos de 2 argumentos.

fi

Fecha o bloco condicional if (é a palavra if ao contrário).

Laço de Repetição e Soma (Bloco for)

for i in $*

A variável especial $* representa todos os argumentos passados pelo usuário em uma única lista. O laço for vai percorrer elemento por elemento, atribuindo o número da vez à variável i.

do

Marca o início do bloco de código do for.

temp_total=`expr $temp_total + $i`

Soma o número atual (`$i`) ao total acumulado (`$temp_total`). As crases ... `` indicam que o comando expr (usado no Shell tradicional para realizar operações matemáticas inteiras) deve ser executado para atualizar a variável.

done

Marca o fim do laço for.

Cálculo Final e Exibição do Resultado

avg=`expr $temp_total / $number_of_args`

Calcula a média dividindo o total acumulado ($temp_total) pela quantidade de argumentos ($number_of_args), atribuindo o resultado a avg.

echo "Media e: $avg"

Exibe na tela o resultado final para o usuário.

Clique para visualizar este comentário

Visualize os comentários desta questão clicando no botão abaixo