我试图从 bash 数组中删除任何一个关键字的第一次出现。
ARRAY=(foo bar and any number of keywords)
keywords=(red, rednet, rd3.0)
我删除了这样的关键字:ARRAY=( ${ARRAY[@]/"$keyword"/} )
然后如果“red”是第一个找到的关键字,它将从两个关键字中删除“ red ”并返回“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"]}
如果 rd3.0 在数组中,bash 会抱怨:从数组:syntax error: invalid arithmetic operator (error token is ".0")
中取消设置或删除完全匹配的安全方法是什么?