Я сделал несколько улучшений:
Вы можете использовать один sed для чтения настроек.Это сохраняет запись в файл tmp.Не уверен, почему вы пытались экспортировать $ 1.
fnReadTestSetting()
{
#$1 is the variable to be read from the testsettings.ini file
sed -n "s/^$1=\(.*$\)/\1/p" $MAIN_FOLDER/testsettings.ini
}
Для записи вам не нужно прикасаться к файлу, если он не существует, потому что он все равно будет создан.Вам не нужен awk для поиска имени настройки.Вы также можете поместить grep в качестве условия в свой оператор if вместо явной проверки его кода выхода.Для замены используйте один sed (вместо удаления и повторения).
fnWriteTestSetting()
{
#$1 is the variable and value to be written to the testsettings.ini file in the format VARIABLE_NAME=VALUE
SETTING_NAME=${1%%=*}
if grep -sq "^${SETTING_NAME}=" $MAIN_FOLDER/testsettings.ini
then
sed -i "s/^${SETTING_NAME}=.*$/$1/" $MAIN_FOLDER/testsettings.ini
else
echo "$1" >> $MAIN_FOLDER/testsettings.ini
fi
return
}
Обновление:
%%=*
удаляет все после =
.Для получения дополнительной информации об операторе %%
обратитесь к руководству по работе со строками :
${string%%substring}
Удаляет самое длинное совпадение $ substring из задней части $ string.