@2013/7/19
- 添加 bashmap_clear命令,可以删除Key或清空整个map。
步骤1:把函数加入bash脚本中(或.bashrc)
# for bashmap {
# echo md5 code for $1
md5()
{
if [ X"$1" == X"" ]
then
echo ""
else
echo "$1" | md5sum - | cut -c 1-32
fi
}
# Usage
# > bashmap "key" "value" # set map[key] = value.
# > bashmap "key" # print map[key]
bashmap()
{
WX_BASHMAP_PREFIX="BASHMAP_"
export WX_BASHMAP_PREFIX
md5key=$(eval "md5 '$1'")
case "$#" in
1)
eval "echo \$$WX_BASHMAP_PREFIX$md5key"
;;
2)
eval "export $WX_BASHMAP_PREFIX$md5key='$2'"
;;
*)
echo 'Usage:'
echo ' bashmap "key" "value"'
echo ' bashmap "key"'
;;
esac
}
# Usage:
# > bashmap_clear # clear All map items
# > bashmap_clear Key # clear a map time by Key
bashmap_clear()
{
WX_BASHMAP_PREFIX="BASHMAP_"
export WX_BASHMAP_PREFIX
case "$#" in
0)
for env in $(set | grep "^$WX_BASHMAP_PREFIX" | cut -d'=' -f1)
do
unset $env
done
;;
1)
md5key=$(eval "md5 '$1'")
unset $WX_BASHMAP_PREFIX$md5key
;;
esac
}
# for bashmap }
步骤2:使用bashmap设置Key:Value
> bashmap A "Value for A"
> bashmap B "Value for B"
> bashmap "A B" "Value for A B"
步骤3:实用bashmap获得Key对应的Value,若没有预设Key则返回空串""
> bashmap A
Value for A
> bashmap B
Value for B
> bashmap "A B"
Value for A B
步骤4:删除指定Key
> bashmap_clear "B"
步骤5:清空map
> bashmap_clear
Have fun! :)