[原]Bash3的key-value数组使用

    平常工作中会遇到很多需要打很多命令的操作,最方便的时写成一个shell脚本让他帮你完成。会懒的程序员才是好程序猿。

    这次我是在写一个需要同步fork库与主库的代码的时候遇到的,首先我需要同步很多个fork库,其次,每次主库都有一个URL,不可能都背下来,每次同步都要运行五六个命名,时间久了以后,自然非常烦。如果在其他语言中,很明显,一个key-value的数组/map之类的就可以直接对应库和url之间的关系了。但是查到bash3的时候居然没有,只能使用数字索引的一维数组。(bash4已经有了),没办法,既然没有自定义key,只能把key放在value里面,自己去解析了。

    上菜。

hgReg=(
	"key1_:_value1" 
	"key2_:_value2" 
	"key3_:_value3"
)
#数组使用 _:_ 这个符号组合来分割,如果有冲突可以替换成别的,前半部分为key,后半部分为value
function process_array() {
	declare -a hash=("${!1}")
	key="${2}"
	for k in "${hash[@]}"; do
		if [ $key = ${k%%_:_*} ];then
			echo ${k##*_:_}
		fi
 	done
}
#调用方式 结果是:value1
echo $(process_array hgReg[@] "key1")