bash 配列から 1 つのキーワードの最初の出現だけを削除しようとしています。
ARRAY=(foo bar and any number of keywords)
keywords=(red, rednet, rd3.0)
次のようにキーワードを削除します。ARRAY=( ${ARRAY[@]/"$keyword"/} )
「red」が最初に見つかったキーワードである場合、両方のキーワードから「red」が削除され、「foo bar rednet」ではなく「foo bar net」が返されます。
編集:これは例です。うまくいけば、これでより明確になります。
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
がrednet rd3.0 の代わりにnet rd3.0ARRAY=(red rednet rd3.0)
を返す場合
unset を使用するunset ${ARRAY["$keyword"]}
と、: rd3.0 が配列内にある場合、bash は不平を言います: 配列:syntax error: invalid arithmetic operator (error token is ".0")
から完全に一致するものだけを設定解除または削除する安全な方法は何ですか?