Я пытаюсь удалить только первое появление любого ключевого слова из массива bash.
ARRAY=(foo bar and any number of keywords)
keywords=(red, rednet, rd3.0)
Я удаляю ключевое слово следующим образом: ARRAY=( ${ARRAY[@]/"$keyword"/} )
тогда, если "красный" является первым найденным ключевым словом, он удалит "красный" из обоих ключевых слов и вернет "foo bar net" вместо "foo bar rednet".
Изменить: вот пример, надеюсь, это прояснит.
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 вместо rednet rd3.0
Если я использую unset,: unset ${ARRAY["$keyword"]}
bash жалуется, если rd3.0 находится в массиве: :syntax error: invalid arithmetic operator (error token is ".0")
Каков безопасный способ сбросить или удалить только точное совпадение из массива?