Fix /rc.preinit/01-inifile apply var=vol to other files

master v2.98
Dmitry Razumov 1 year ago
parent c0cdee44af
commit 522cca88d5
Signed by: asmeron
GPG Key ID: 50BC1DB583B79706

@ -51,14 +51,16 @@ SYSCONF="${ROOTFS}${SYSCONF}"
[[ $(cat "${FILE_CONFIG}" 2>/dev/null) =~ ($'\n'|^)+"${LINE:1}"($'\n'|$)+ ]] || echo "${LINE:1}" >> "${FILE_CONFIG}"
else
# Если в строке нет '=' то пропустить
# Если строка содержит '=' и имя переменной не содержит пробел, то добавляем как переменная=значение: NAME_VAR=VALUE_VAR
# Если строка содержит '=' и имя переменной до [] не содержит пробел, то добавляем как переменная=значение: NAME_VAR=VALUE_VAR
NAME_VAR=${LINE%%=*}
[[ ${LINE} != ${NAME_VAR} ]] || continue
[[ ${NAME_VAR} =~ " " ]] && continue
# Удалим строку только с именем без значения: NAME_VAR=
[[ -f ${FILE_CONFIG} && $(cat -n ${FILE_CONFIG}) =~ ($'\n'|^)+[[:blank:]]*([[:digit:]]+)[[:blank:]]*"${NAME_VAR}="[^$'\n']*($'\n'|$)+ ]] && sed "${BASH_REMATCH[2]}d" -i "${FILE_CONFIG}"
[[ ${NAME_VAR%%[*} =~ " " ]] && continue
# Удалим строку только с именем NAME_VAR=
#[[ -e ${FILE_CONFIG} && $(cat -n ${FILE_CONFIG}) =~ (^|$'\n')+[[:blank:]]*([[:digit:]]+)[[:blank:]]*"${NAME_VAR}="[^$'\n']*($'\n'|$)+ ]] && sed "${BASH_REMATCH[2]}d" -i "${FILE_CONFIG}"
# Обработка строк с паролями
if [[ ${FILE_CONFIG##*/} == "users" && ${NAME_VAR} =~ ^("DEFAULTPASSWD"|"DEFAULTROOTPASSWD"|"NEEDEDUSERS"|"USERADD["|"GROUPADD[") ]]; then
[[ -e ${FILE_CONFIG} ]] && sed -E "/^[[:blank:]]*$(ere_quote_sed "${NAME_VAR}")=.*/d" -i "${FILE_CONFIG}"
[[ -e ${FILE_ROOT_USERS} ]] && sed -E "/^[[:blank:]]*$(ere_quote_sed "${NAME_VAR}")=.*/d" -i "${FILE_ROOT_USERS}"
echo "${LINE}" >> ${FILE_ROOT_USERS}
if [[ ${NAME_VAR} == @("DEFAULTPASSWD"|"DEFAULTROOTPASSWD"|"NEEDEDUSERS") ]]; then
true
@ -69,7 +71,20 @@ SYSCONF="${ROOTFS}${SYSCONF}"
else
echo "${LINE}" >> "${FILE_CONFIG}"
fi
elif [[ ! ${FILE_CONFIG%/*} =~ ^"${SYSCONF}" ]]; then
# Если файл указанный не конфигурационный из /etc/ublinux/
VALUE_VAR=${LINE#*=}
[[ ${VALUE_VAR} =~ ^[\'\"]+.*[\'\"]+ ]] && VALUE_VAR=${VALUE_VAR:1:-1}
if ! grep -Eq "^[[:blank:]]*$(ere_quote_grep "${NAME_VAR}=${VALUE_VAR}")[[:blank:]]*$" "${FILE_CONFIG}" 2>/dev/null; then
if grep -Eq "^[[:blank:]]*$(ere_quote_grep "${NAME_VAR}")=.*$" "${FILE_CONFIG}" 2>/dev/null; then
sed -E "s/^([[:blank:]]*)($(ere_quote_sed "${NAME_VAR}"))=.*/\1\2=$(ere_quote_sed "${VALUE_VAR}")/g" -i "${FILE_CONFIG}"
else
[[ -e ${FILE_CONFIG} ]] && sed -E "/^[[:blank:]]*$(ere_quote_sed "${NAME_VAR}")=.*/d" -i "${FILE_CONFIG}"
echo "${LINE}" >> "${FILE_CONFIG}"
fi
fi
else
[[ -e ${FILE_CONFIG} ]] && sed -E "/^[[:blank:]]*$(ere_quote_sed "${NAME_VAR}")=.*/d" -i "${FILE_CONFIG}"
echo "${LINE}" >> "${FILE_CONFIG}"
fi
fi

Loading…
Cancel
Save