#!/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" if [[ -f ${FILE_GRUB_MAIN} ]]; then 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} fi FILE_GRUB_ADDON="${PATH_GRUB}/ublinux/grub_${LANG%_*}_addon.cfg" if [[ -f ${FILE_GRUB_ADDON} ]]; then 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} #" fi FILE_GRUB_BOOTHDD="${PATH_GRUB}/ublinux/grub_${LANG%_*}_boothdd.cfg" if [[ -f ${FILE_GRUB_BOOTHDD} ]]; then 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} #" fi FILE_GRUB_LOCAL="${PATH_GRUB}/ublinux/grub_local.cfg" if [[ -f ${FILE_GRUB_LOCAL} ]]; then NAME_MENU_GRUB_LOCAL=$(sed -En "/${FILE_GRUB_LOCAL##*/}/{x;{s/menuentry \"(.*)\" .*/\1/p};d;}; x" ${FILE_GRUB_MAIN} | sed -E "s/^[[:blank:]]//") sed -En "/menuentry/{ /(Back|Возврат)/!{ s/^[ \t]*/${NAME_MENU_GRUB_LOCAL}>/ s/\\$\{VER_DISTRIB\}/${VER_DISTRIB}/ s/menuentry \"(.*)\" .*/\1/p } }" ${FILE_GRUB_LOCAL} #" fi } 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