しばらくの間、この関数を使用して配列内の値を見つけましたが、改善したいと思います。
# Checks if the first argument is found in the subsequent ones.
function my_function_is_value_in() {
local -r NEEDLE=$1
local -ra HAYSTACK=( "${@:2}" )
local value
for value in "${HAYSTACK[@]}"; do
[[ $value == "$NEEDLE" ]] && return 0
done
return 1
}
HAYSTACK
「読みやすさのためのパラメーターの名前変更」配列への割り当ては、特に「検索」機能の場合、非効率的であり、何度も実行される可能性があると思います。
my_function_is_value_in coconut cherry coriander coconut cottage-cheese
Bash には上記のことを行う効率的な方法がありますか、それともできるだけ${@:2}
効率的に直接ループしていますか?
と比較/対照してください..これはまさにこれを行うためperl
のgrep( /pattern/ @array)
専用関数です。