add script não retornará a saída pretendida

0

Eu quero um script para calcular a soma dos números inseridos pelo usuário.

até agora eu tenho:

#!/bin/bash
add() {
  sum=0

  for num
  do
          sum=$((sum +num))
  done

}

echo "$sum"

o comando que eu uso é:

add 4 -3 9 12

o retorno é: linha em branco - não as palavras apenas uma linha em branco nome de usuário ~ / pasta: >

o que estou perdendo?

as permissões são rwxr xr x Estou executando um shell interativo com a pasta no meu caminho, estou com prejuízo.

    
por JonathanB2323 20.12.2017 / 03:55

2 respostas

2

Vamos modificar um pouco seu script:

$ cat add.sh
#!/bin/bash
add() {
  sum=0
  for num
  do
          sum=$((sum +num))
  done
}

add "$@"
echo "sum=$sum"

Agora, vamos executar o script:

$ bash add.sh 4 -3 9 12
sum=22

Funciona.

A única mudança é que chamamos sua função via add "$@" antes de ecoar sum .

    
por 20.12.2017 / 04:03
1

Apenas para incluir a maneira simples atual de fazer isso:

#!/bin/bash
IFS=+
bc <<< "$*"

E usá-lo (quando em um arquivo chamado add.sh no qual você tem permissões de execução):

$ ./add.sh 4 -3 9 12
22
$ 

Ou apenas defina-o como uma função no seu ~/.bashrc ou no script bash maior que você está escrevendo:

add() (
  IFS=+
  bc <<< "$*"
)
    
por 20.12.2017 / 04:46