У меня есть массив
array=("a b" "c d")
Теперь мне нужно найти a b
и найти вхождение. Как подойти?
Когда вы печатаете каждый элемент массива на новой строке , вы можете использовать grep:
printf '%s\n' "${array[@]}" | grep "a b"
Если элементы массива содержат \n
, лучше использовать \0
и grep -z
(спасибо @muru) :
printf '%s\0' "${array[@]}" | grep -z "a b"
В этой SO Q & A предлагается способ выполнения поиска
Реализация по вашему вопросу:
#!/bin/bash
array=("a b" "c d")
value="a b"
if [[ " ${array[@]} " =~ " ${value} " ]]; then
echo found $value
fi
Вывод:
found a b
С bash:
array=("a b" "c d")
for ((i=0; i<${#array[@]}; i++)); do
if [[ ${array[$i]} == "a b" ]]; then
echo "Element $i matched"
fi
done
Вывод:
Element 0 matched
${#array[@]}
содержит номер последнего элемента в массиве.