Вопрос Bash передает параметр array и non-array в функцию


Я хочу создать функцию в bash, которая принимает 2 параметра. Один - это просто значение, а другое - массив. Я бы перебирал массив и выполнял операцию с использованием как элемента массива, так и другого параметра функции. Это было бы что-то вроде этого (я не знаю правильного синтаксиса):

#!/bin/bash

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

array=(1 2 3)

sumOverArray 3 "${array[@]}"

2
2018-01-04 23:24


происхождения




ответы:


Ваш код почти завершен. Просто добавь shift после присвоения $val, он удалит первый элемент из $@ массив.

...
val=$1
shift
arr=("$@")
...

6
2018-01-04 23:28



@ pa4080: Обновлено. - choroba
Спасибо!! Означает ли это, когда вы обращаетесь к параметру массива к функции, массив объединяет все параметры? Что делать, если вы хотите передать 2 массива функции? Вам нужно было бы сдвинуть число элементов в первом массиве? - echo
@echo: Да, и вам придется передать номер. Если вам нужно передать несколько массивов, лучше переключиться на настоящий язык программирования (Perl, Python, Ruby и т. Д.), - choroba