Genaues Bash-Array-Element löschen?

Ich versuche zu entfernenNur der erste Auftritt eines beliebigen Schlüsselworts aus einem Bash-Array.

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

Ich entferne das Keyword wie folgt:ARRAY=( ${ARRAY[@]/"$keyword"/} ) Wenn "rot" das erste gefundene Schlüsselwort ist, wird es entfernt.rot'von beiden Schlüsselwörtern und geben "foo bar net" anstelle von "foo bar rednet" zurück.

Bearbeiten: Hier ist Beispiel, hoffentlich macht dies klarer.

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

Was, wenn derARRAY=(red rednet rd3.0) kehrt zurücknet rd3.0 anstattrednet rd3.0

Wenn ich unset benutze:unset ${ARRAY["$keyword"]} Bash beklagt sich, wenn die rd3.0 im Array ist::syntax error: invalid arithmetic operator (error token is ".0") Was ist der sichere Weg, um nur eine exakte Übereinstimmung von einem Array zu entfernen?

Antworten auf die Frage(2)

Ihre Antwort auf die Frage