I am trying to remove just the first appearance of any one keyword from a bash array.
ARRAY=(foo bar and any number of keywords)
keywords=(red, rednet, rd3.0)
I remove the keyword like this: ARRAY=( ${ARRAY[@]/"$keyword"/} )
then if "red' is the first found keyword, it will strip 'red' from both keywords and return "foo bar net" instead of "foo bar rednet".
Edit: Here is example, hopefully this makes it clearer.
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
Which if the ARRAY=(red rednet rd3.0)
returns net rd3.0 instead of rednet rd3.0
If I use unset,: unset ${ARRAY["$keyword"]}
bash complains if the rd3.0 is in the array: :syntax error: invalid arithmetic operator (error token is ".0")
What is the safe way to unset or remove just an exact match from an array?