Код для создания Bash menu в Linux

#!/bin/bash

print_header() {
clear
echo "========================================"
echo " NETWORK FIX "
echo "========================================"
}

#menu show
print_menu () {
local highlighted=$1
options=("Exit" "Ethernet Speed Check" "DHCP restart" "Service network restart" "Mount -a" "Exit")
for i in "${!options[@]}"; do
if [ $i -eq $highlighted ]; then
tput setaf 2; tput bold; echo "> ${options[$i]}"; tput sgr0
else
echo " ${options[$i]}"
fi
done
}

#main cycle
highlighted=0
options_count=6

while true; do
print_header
print_menu $highlighted

read -rsn1 key
case $key in
$'\x1b') # ESC turns
read -rsn2 -t 0.1 key
if [ "$key" == "[A" ]; then
((highlighted--))
if [ $highlighted -lt 0 ]; then highlighted=$((options_count - 1)); fi
elif [ "$key" == "[B" ]; then
((highlighted++))
if [ $highlighted -ge $options_count ]; then highlighted=0; fi
fi
;;
"") # ENTER
case $highlighted in
0) clear; exit 0 ;;
1) clear; echo ""; echo "========================================"; ethtool eth0 | grep Speed; echo "========================================"; echo ""; echo "Press any key to continue"; echo ""; read -n1 ; sleep 1 ;;
2) clear; dhclient eth0 -v ; sleep 3 ;;
3) clear; service network restart ; echo ""; echo "Press any key to continue"; echo ""; read -n1 ; sleep 1 ;;
4) clear; mount -a ; echo "OK"; echo "Press any key to continue"; echo ""; read -n1 ; sleep 1 ;;
5) clear; exit 0 ;;
esac
sleep 1
;;
esac
done

По коду нужно дать пояснения, команды в меню только для примера, под мои фиксированные задачи, вы ставите свои, два exit сделано специально, чтобы быстрее можно выходить  из меню, spleep после меню, защита от повторного нажатия enter

Продолжайте читать

НазадДалее