я пришел через этот прохладный функции Bash для проверки, если массив содержит элемент:Bash проверка элемент в массиве для элементов другого массива
CONTAINS_ELEMENT(){
local e
for e in "${@:2}"; do [[ "$e" == "$1" ]] && return 0; done
return 1
}
Вот пример его использования:
if CONTAINS_ELEMENT $element "${array[@]}"; then
...
fi
Мой вопрос таков: Есть ли способ переписать эту функцию, чтобы она могла проверить, равно ли какое-либо значение в массиве любому значению с другим массивом, а не просто проверять одно значение , поскольку оно в корне делает эс?
Неправильно! Попробуйте '' $ {@: 2} "'. – TrueY
Очень похоже на вопросы о пересечении массива [1] (http://stackoverflow.com/questions/2696055/intersection-of-two-lists-in-bash) и [2] (http://stackoverflow.com/questions/ 7870230/массив пересечений-в-Баш). – l0b0
Чтобы показать вопрос был решен, отметьте один из ответов как «принятый». – fedorqui