我想判断一个字符串是否在数组中。我在谷歌上找到了以下功能。但是我不能完全理解这个函数的含义。在这个函数中,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 $?
来自 man bash:
实际上,它会做同样的事情:
在 command 之后
shift
,只有数组元素保留在for
循环迭代的位置参数中。