bash脚本(bashmap):一个拟补bash没有hashmap的函数

26 篇文章 0 订阅
25 篇文章 0 订阅

@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! :)




评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值