excluir o elemento exato da matriz bash?

Estou tentando removerapenas a primeira aparição de qualquer palavra-chave de um array bash.

ARRAY=(foo bar and any number of keywords)
keywords=(red, rednet, rd3.0)

Eu removo a palavra-chave assim:ARRAY=( ${ARRAY[@]/"$keyword"/} ) então, se "vermelho" for a primeira palavra-chave encontrada, ela será eliminada "vermelho'de ambas as palavras-chave e retornar "foo bar net" em vez de "foo bar rednet".

Edit: Aqui está o exemplo, espero que isso fique mais claro.

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

Que se oARRAY=(red rednet rd3.0) devolvenet rd3.0 ao invés derednet rd3.0

Se eu usar unset:unset ${ARRAY["$keyword"]} O bash reclama se o rd3.0 está no array::syntax error: invalid arithmetic operator (error token is ".0") Qual é a maneira segura de remover ou remover apenas uma correspondência exata de uma matriz?

questionAnswers(2)

yourAnswerToTheQuestion