文字列が配列にあることを確認したいと思います。 Googleで次の機能を見つけました。ただし、この機能の意味を完全に理解することはできません。この関数では、match
一致させる文字列が割り当てられます。しかし、配列はどこに保存されていますか?いくつかの出力を追加しましたが、変数はe
常に空です。どういう意味か探してみましたshift
。変数を左$2
に移動します$1
。しかし、それは役に立たなくなりました$1
。この機能がどのように機能するかを知っている人はいますか?とても感謝しています。
containsElement () {
local e match="$1"
echo $match
echo $e
shift
echo $e
echo $match
for e; do [[ "$e" == "$match" ]] && return 0; done
return 1
}
array=("something to search for" " for" "a string" "test2000")
containsElement "a string" "${array[@]}"
echo $?
答え1
メンズバッシュから:
~のため名前[[存在する[言葉...]]; ]するリスト;完了
...
「あれば」言葉「省略すると for コマンドが実行されます。 リスト 各位置引数セットごとに1回
実際には同じことを行います。
for e in "$@"; do
コマンドの後、shift
ループ反復の位置引数に配列要素のみが残ります。for