今天写个shell脚本,需要存一些小数据,用数据库明显是太不必要了,那就写在文件里吧,为了方便存取,写了个简单的 key-value 实现, 支持增删改查就行啦。需要的拿去用~
#!/bin/sh
# @author:hackooo@sina.cn
# Notice special chars inside key like / will replace with _ eg. abc/def => abc_def
SED=/bin/sed
DB=kv.db
# $1 : key
kv_get(){
key=`echo $1 | sed 's/\//_/g'`
$SED -n "s/^${key} \(.*\)/\1/p" $DB
}
# $1:key $2:value
kv_set(){
key=`echo $1 | sed 's/\//_/g'`
ori_value=`kv_get $key`
if [ $ori_value ]
then
#replace the old value
$SED -i "s/^${key} .*$/${key} ${2}/" $DB
else
#add a new record
echo "$key $2" >> $DB
fi
}
# delete
kv_del(){
key=`echo $1 | sed 's/\//_/g'`
$SED -i "/^${key} /d" $DB
}