Bash passa ambos os parâmetros array e non-array para funcionar

2

Eu quero criar uma função no bash que leva 2 parâmetros. Um é simplesmente um valor e o outro é um array. Eu faria um loop no array e executaria uma operação usando o elemento array e o outro parâmetro da função. Seria algo assim (não sei a sintaxe correta):

#!/bin/bash

function sumOverArray() {
   val=
   arr=("$@")
   for i in "${arr[@]}";
   do
      sum=$((i + val))
      echo "sum: $sum"
   done
}

array=(1 2 3)

sumOverArray 3 "${array[@]}"
    
por echo 05.01.2018 / 00:24

1 resposta

6

Seu código está quase completo. Apenas adicione shift após a atribuição a $val , ele removerá o primeiro elemento da matriz $@ .

...
val=
shift
arr=("$@")
...
    
por choroba 05.01.2018 / 00:28