我想编写一个函数,如果属性存在则返回0,如果不存在,则返回1.
例如:
typeset -A hashtable
hashtable[a]='this is a valid element'
testprop hashtable[a] # returns 0
testprop hashtable[b] # returns 1
可能吗?
答案 0 :(得分:4)
参数扩展 ${+name}
几乎可以做到,你想要什么。如果name
是设置参数1
被替换,则0
被替换。
要获得所需的界面,可以将其包装到函数中:
function testprop {
case ${(P)+${1}} in
0) return 1;;
1) return 0;;
esac
}
alias testprop='noglob testprop'
P
告诉 zsh 将值${1}
解释为更多参数名称。${+name}
设置为1
,则{li> name
将被替换为0
。
testprob
的参数。否则,索引周围的方括号将被解释为globbing运算符。