Вы не можете передать массив как один аргумент функции. Когда вы пишете "${cut_pages[@]}"
, он распределяет массив на отдельные аргументы функции.
Я изменил функцию, чтобы в качестве первого аргумента принять значение для поиска, а массив - это все остальные аргументы. После присвоения этому value
команда shift
удаляет его из списка аргументов, а затем я перебираю "$@"
для обработки оставшихся аргументов.
Вы также не получаете результат функционировать правильно. $?
содержит код состояния в операторе return
. Чтобы получить то, что повторяет функция, вы используете $(...)
. Я удалил echo "was found"
, так что это не повлияет на результат.
#!/bin/bash
function get_index() {
value="$1"
shift
local index=0
for i in "$@"; do
if [[ "$i" = "${value}" ]]; then
echo "${index}";
return
fi
((index++))
done
return 1
}
echo "index test"
cut_pages=(2 5)
if index=$(get_index 5 "${cut_pages[@]}"); then
echo $index
fi