|
|
#!/usr/bin/env bash
|
|
|
|
|
|
ENABLED=yes
|
|
|
[[ ${ENABLED} == "yes" ]] || exit 0
|
|
|
|
|
|
SELF_NAME="grub-functions"
|
|
|
|
|
|
PATH_GRUB="/memory/data/from/0/boot/grub/"
|
|
|
|
|
|
exec_get_all_menuentry(){
|
|
|
## Показать все варианты загрузки из grub_*.cfg grub_*_addon.cfg grub_*_boothdd.cfg
|
|
|
FILE_OSRELEASE="/usr/lib/os-release"
|
|
|
NAME_DISTRIB=$(sed -En "/VARIANT=/{s/VARIANT=\"(.*)\"/\1/p}" ${FILE_OSRELEASE})
|
|
|
VER_DISTRIB=$(sed -En "/VERSION_ID=/{s/VERSION_ID=(.*)/\1/p}" ${FILE_OSRELEASE})
|
|
|
|
|
|
FILE_GRUB_MAIN="${PATH_GRUB}/ublinux/grub_${LANG%_*}.cfg"
|
|
|
sed -En "/menuentry/{
|
|
|
/(ISO|Install|Установка)/!{
|
|
|
s/^[ \t]*//
|
|
|
s/\\$\{NAME_DISTRIB\}/${NAME_DISTRIB}/
|
|
|
s/\\$\{VER_DISTRIB\}/${VER_DISTRIB}/
|
|
|
s/menuentry \"(.*${NAME_DISTRIB}.*${VER_DISTRIB}.*)\" .*/\1/p
|
|
|
}
|
|
|
}" ${FILE_GRUB_MAIN}
|
|
|
|
|
|
|
|
|
FILE_GRUB_ADDON="${PATH_GRUB}/ublinux/grub_${LANG%_*}_addon.cfg"
|
|
|
NAME_MENU_GRUB_ADDON=$(sed -En "/${FILE_GRUB_ADDON##*/}/{x;{s/menuentry \"(.*)\" .*/\1/p};d;}; x" ${FILE_GRUB_MAIN})
|
|
|
sed -En "/menuentry/{
|
|
|
/(ISO|Install|Установка)/!{
|
|
|
s/^[ \t]*/${NAME_MENU_GRUB_ADDON}>/
|
|
|
s/\\$\{NAME_DISTRIB\}/${NAME_DISTRIB}/
|
|
|
s/\\$\{VER_DISTRIB\}/${VER_DISTRIB}/
|
|
|
s/menuentry \"(.*${NAME_DISTRIB}.*${VER_DISTRIB}.*)\" .*/\1/p
|
|
|
}
|
|
|
}" ${FILE_GRUB_ADDON}
|
|
|
|
|
|
FILE_GRUB_BOOTHDD="${PATH_GRUB}/ublinux/grub_${LANG%_*}_boothdd.cfg"
|
|
|
NAME_MENU_GRUB_BOOTHDD=$(sed -En "/${FILE_GRUB_BOOTHDD##*/}/{x;{s/menuentry \"(.*)\" .*/\1/p};d;}; x" ${FILE_GRUB_MAIN})
|
|
|
sed -En "/menuentry/{
|
|
|
/(Back|Возврат)/!{
|
|
|
s/^[ \t]*/${NAME_MENU_GRUB_BOOTHDD}>/
|
|
|
s/\\$\{VER_DISTRIB\}/${VER_DISTRIB}/
|
|
|
s/menuentry \"(.*)\" .*/\1/p
|
|
|
}
|
|
|
}" ${FILE_GRUB_BOOTHDD}
|
|
|
}
|
|
|
|
|
|
exec_get_last_menuentry(){
|
|
|
## Показать последний выбранный вариант загрузки
|
|
|
FILE_GRUBENV="${PATH_GRUB}/grubenv"
|
|
|
sed -En "/saved_entry=/{s/saved_entry=(.*)/\1/p}" ${FILE_GRUBENV}
|
|
|
}
|
|
|
|
|
|
################
|
|
|
##### MAIN #####
|
|
|
################
|
|
|
|
|
|
# Если файл подключен как ресурс с функциями, то выйти
|
|
|
return 0 2>/dev/null && return 0
|
|
|
if [[ -z $@ ]]; then
|
|
|
true
|
|
|
# while read -r FUNCTION; do
|
|
|
# $"${FUNCTION##* }"
|
|
|
# done < <(declare -F | grep "declare -f exec_")
|
|
|
else
|
|
|
FUNCTION=
|
|
|
while [[ $# -gt 0 ]]; do
|
|
|
[[ -z ${1} ]] || { declare -f ${1} &>/dev/null && FUNCTION+="; ${1}" || FUNCTION+=" '${1}'"; }
|
|
|
shift
|
|
|
done
|
|
|
eval ${FUNCTION#*; }
|
|
|
fi
|
|
|
|