我有一些shell功能,我真的不明白:
# Check if a value exists in an array
# @param $1 mixed Needle
# @param $2 array Haystack
# @return Success (0) if value exists, Failure (1) otherwise
# Usage: in_array "$needle" "${haystack[@]}"
# See: http://fvue.nl/wiki/Bash:_Check_if_array_element_exists
in_array() {
local hay needle=$1
shift
echo $hay
for hay; do
echo $hay
[[ $hay == $needle ]] && return 0
done
return 1
}
以下是运行的输出:
$ in_array a b c a
b
c
a
hay
如何从命令行获取参数值?为什么在for
循环之前它是空的? hay
如何迭代获取值?
答案 0 :(得分:2)
local
的示例用法是:
local a b c=d e=f g
这意味着a
,b
,c
,e
和g
在本地定义,c
的值为{{ 1}}和d
的值为e
,变量f
,a
和b
的值已重置为空。
所以你现在明白你的第一行(即为什么g
为空)。
现在,
hay
是
的快捷方式for hay; do
(有些人会说,它更具可移植性,这就是有些人使用它的原因---有些人通过懒惰使用它(比较击键次数)---其他人只是不使用它。)
现在我猜你已经拥有了所有这些!
顺便说一下,这个函数编写得很好(除了前面提到的捷径for hay in "$@"; do
)。