удалить точный элемент массива bash?
Я пытаюсь удалитьтолько первое появление любого одного ключевого слова из массива bash.
ARRAY=(foo bar and any number of keywords)
keywords=(red, rednet, rd3.0)
Я удаляю ключевое слово так:ARRAY=( ${ARRAY[@]/"$keyword"/} )
тогда есликрасный» первое найденное ключевое словокрасный» от обоих ключевых слов и возвратафу бар нетто " вместо "фу бар реднет ".
Изменить: Вот пример, надеюсь, это проясняет.
for keyword in ${ARRAY[@]}; do
if [ "$keyword" = "red" ] || [ "$keyword" = "rd3.0" ] || [ "$keyword" = "rednet" ]; then
# HERE IS TROUBLE
ARRAY=( ${ARRAY[@]/"$keyword"/} )
echo "ARRAY is now ${ARRAY[@]}"
break
fi
done
Который, еслиARRAY=(red rednet rd3.0)
возвращаетсяnet rd3.0 вместореднет rd3.0
Если я использую unset, то:unset ${ARRAY["$keyword"]}
bash жалуется, если rd3.0 находится в массиве::syntax error: invalid arithmetic operator (error token is ".0")
Какой безопасный способ удалить или удалить только точное совпадение из массива?