bash - How do I improve my logic to read and write variable values to a file? -


i wrote functions in shell script read , write variable settings from/to file. wondering if there cleaner way this. don't bit delete existing match write , rewrite @ end of file. there better way this? thanks.

fnreadtestsetting() { #$1 variable read testsettings.ini file grep $1 $main_folder/testsettings.ini >$main_folder/temp.ini if [ $? -eq 0 ];     sed -i "s|$1=||" $main_folder/temp.ini     test_value=`cat $main_folder/temp.ini`     export $1=$test_value fi rm $main_folder/temp.ini return }   fnwritetestsetting() { #$1 variable , value written testsettings.ini file in format variable_name=value if [ ! -e $main_folder/testsettings.ini ];     touch $main_folder/testsettings.ini fi setting_name=`echo $1 | awk -f = '{print $1}'` grep $setting_name $main_folder/testsettings.ini &>/dev/null if [ $? -eq 0 ];     sed -i "/^$setting_name/d" $main_folder/testsettings.ini     echo "$1" >> $main_folder/testsettings.ini  else     echo "$1" >> $main_folder/testsettings.ini fi return } 

i have made improvements:

you can use single sed reading setting. saves writing tmp file. not sure why trying export $1.

fnreadtestsetting() {   #$1 variable read testsettings.ini file   sed -n "s/^$1=\(.*$\)/\1/p" $main_folder/testsettings.ini  } 

for writing, don't need touch file if doesn't exist, because created anyway. don't need awk finding setting name. can place grep condition in if-statement instead of explicitly checking exit code. use single sed replacement (instead of deleting , echoing).

fnwritetestsetting() {   #$1 variable , value written testsettings.ini file in format variable_name=value   setting_name=${1%%=*}   if grep -sq "^${setting_name}=" $main_folder/testsettings.ini       sed -i "s/^${setting_name}=.*$/$1/" $main_folder/testsettings.ini   else     echo "$1" >> $main_folder/testsettings.ini   fi   return } 

update:

%%=* deletes after =. more info on %% operator take @ string manipulation guide:

${string%%substring} deletes longest match of $substring of $string.


Comments

Popular posts from this blog

apache - Add omitted ? to URLs -

redirect - bbPress Forum - rewrite to wwww.mysite prohibits login -

php - How can I stop spam on my custom forum/blog? -