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

来源:互联网 发布:java 访问量统计 编辑:程序博客网 时间:2024/04/30 12:56

@2013/7/19

- 添加 bashmap_clear命令,可以删除Key或清空整个map。

步骤1:把函数加入bash脚本中(或.bashrc)

# for bashmap {# echo md5 code for $1md5(){  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 Keybashmap_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 AValue for A> bashmap BValue for B> bashmap "A B"Value for A B

步骤4:删除指定Key

> bashmap_clear "B"

步骤5:清空map

> bashmap_clear


Have fun! :)