Não há necessidade de fazer um loop se você souber que sempre obterá quatro inteiros na linha de comando:
#!/bin/sh
sum=$(( $1 + $2 + $3 + $4 ))
printf 'sum is %d\n' "$sum"
Alternativamente, apenas
#!/bin/sh
printf 'sum is %d\n' "$(( $1 + $2 + $3 + $4 ))"
Para suportar um número arbitrário de argumentos, você precisará fazer um loop:
#!/bin/sh
while [ "$#" -gt 0 ]; do
sum=$(( sum + $1 ))
shift
done
printf 'sum is %d\n' "$sum"
Este script irá iterar sobre seus argumentos de linha de comando, adicionando o primeiro à variável sum
e deslocando-o da lista de argumentos da linha de comando, até que nenhum argumento seja deixado. A expansão da variável $#
expandirá para o número de argumentos da linha de comando, enquanto shift
removerá $1
da lista, deslocando $2
para o seu lugar (e $3
para $2
etc.). / p>
Alternativamente:
#!/bin/sh
for num do
sum=$(( sum + num ))
done
printf 'sum is %d\n' "$sum"
Em vez de mudar constantemente a lista de argumentos da linha de comando, isso faz com que a lista seja desmarcada e, em vez disso, itera sobre ela, adicionando cada uma a sum
.
A cabeça do loop for num do
também pode ser escrita for num in "$@"; do
.