cfg_find(){
file_name=$1
labelname=$2
key=$3
labelline=$(grep -n "^\[.*\]$" $file_name | awk -F ':' '{print $1}')
lineinfo=$(grep -n "^\[.*\]$" $file_name | awk -v labelname="$labelname" -F ':' '{a[NR]=$1;b[NR]=$2} END{for(i=0;i
lable_lines=()
total_line=$(cat $file_name | wc -l)
for line in $lineinfo
do
start_line=$(echo $line | awk '{print $1}')
end_line=$(echo $line | awk '{print $2}')
if [ -z $end_line ]
then
$end_line=$total_line
fi
if [ ! -z $start_line ] || [ ! -z $end_line ]
then
keyinfo=$(cat $file_name | head -n $(($end_line-1)) | tail -n "+"$start_line | grep -n $key | tail -n 1 | sed 's/ //g')
sub_line=$(cat $keyinfo | grep -n "^"$key"=" | awk -F ':' '{print $1}')
if [ ! -z sub_line ]
then
$lable_lines[${#lable_lines[@]}]=$(($start_line+$sub_line-1))
fi
fi
done
return $lable_lines
}
cfg_get(){
file_name=$1
labelname=$2
key=$3
cfg_find $file_name $labelname $key
lable_lines=$?
if [ ${#lable_lines[@]} -eq 0 ]
then
return ''
else:
ln=$lable_lines[${#lable_lines[@]}]
key_value=$(cat $file_name | sed -n $ln"p")
value=$(echo $key_value | awk -F '=' '{print $2}')
return $value
fi
}
cfg_modify(){
file_name=$1
labelname=$2
key=$3
new_value=$4
cfg_find $file_name $labelname $key
lable_lines=$?
if [ ${#lable_lines[@]} -eq 0 ]
then
return 0
else:
ln=$lable_lines[${#lable_lines[@]}]
key_value=$(cat $file_name | sed -n $ln"p")
key=$(echo $key_value | awk -F '=' '{print $1}')
new_key_value=$key"="$new_value
sed '"$ln"c "$new_key_value"' $file_name
sed -n '"$ln"p' $file_name
return 1
fi
}