Jednoduché menu v bash

Předpokládejme, že v adresáři "~/menu" jsou uložené scripty. Následující script vygeneruje interaktivní menu:

#!/bin/bash

# Adresář obsahující skripty menu
menu_dir=~/menu

# Načtení seznamu scriptů v adresáři
scripts=($menu_dir/*)

# Funkce pro zobrazení menu
function show_menu() {
  clear
  echo "=== MENU ==="
  for ((i=0; i<${#scripts[@]}; i++)); do
    script="${scripts[$i]}"
    script_name=$(basename "$script")
    echo "$i. $script_name"
  done
  echo "q. Konec"
  echo "============"
}

# Spuštění vybraného scriptu
function run_script() {
  index=$1
  if ((index >= 0 && index < ${#scripts[@]})); then
    script="${scripts[$index]}"
    chmod +x "$script"
    clear
    "$script"
    read -p "Stiskněte Enter pro návrat do menu."
  fi
}

# Hlavní smyčka menu
while true; do
  show_menu
  read -p "Zvolte položku menu: " choice
  case $choice in
    q) break ;;
    [0-9]*)
      run_script "$choice"
      ;;
    *) echo "Neplatná volba. Zkuste to znovu." ;;
  esac
done

Tento skript zobrazuje seznam scriptů uložených v adresáři ~/menu a umožňuje uživateli vybrat script, který chce spustit. Každý script v adresáři ~/menu musí mít oprávnění ke spuštění (chmod +x). Po spuštění vybraného scriptu se uživatel vrátí zpět do menu.

Přizpůsobte proměnnou menu_dir podle svého adresáře, kde jsou uloženy vaše scripty menu. Ujistěte se, že scripty mají správná oprávnění ke spuštění.

Tento skript vytváří menu pomocí pole options, kde jsou uloženy názvy položek. Každá položka je spojena s odpovídajícím příkazem ve funkci process_choice(). Uživatel může vybrat číslo odpovídající položce menu a spustit tak příslušný příkaz.

Přizpůsobte pole options a funkci process_choice() podle svých potřeb, abyste přidali nebo upravili položky menu a příkazy.

Toto je jen jedno z možných řešení. Existuje spousta různých způsobů, jak implementovat menu v bash skriptu, takže si můžete vybrat ten, který nejlépe vyhovuje vašim potřebám.

#!/bin/bash

# Pole s názvy položek menu
options=("První položka" "Druhá položka" "Třetí položka" "Konec")

# Funkce pro zobrazení menu
function show_menu() {
  clear
  echo "=== MENU ==="
  for ((i=0; i<${#options[@]}; i++)); do
    echo "$i. ${options[$i]}"
  done
  echo "============"
}

# Funkce pro zpracování volby uživatele
function process_choice() {
  choice=$1
  case $choice in
    0) echo "Spustit první skript" ;;  # Zde můžete vložit příkaz pro první položku menu
    1) echo "Spustit druhý skript" ;;  # Zde můžete vložit příkaz pro druhou položku menu
    2) echo "Spustit třetí skript" ;;  # Zde můžete vložit příkaz pro třetí položku menu
    3) exit ;;  # Konec skriptu
    *) echo "Neplatná volba. Zkuste to znovu." ;;
  esac
}

# Hlavní smyčka menu
while true; do
  show_menu
  read -p "Zvolte položku menu: " choice
  process_choice "$choice"
  read -p "Stiskněte Enter pro pokračování."
done

Zde je další příklad využívající funkce a volání těchto funkcí:

#!/bin/bash

# Funkce pro zobrazení menu
function show_menu() {
  clear
  echo "=== MENU ==="
  echo "1. První položka"
  echo "2. Druhá položka"
  echo "3. Třetí položka"
  echo "4. Konec"
  echo "============"
}

# Funkce pro zpracování volby uživatele
function process_choice() {
  choice=$1
  case $choice in
    1) echo "Spustit první skript" ;;  # Zde můžete vložit příkaz pro první položku menu
    2) echo "Spustit druhý skript" ;;  # Zde můžete vložit příkaz pro druhou položku menu
    3) echo "Spustit třetí skript" ;;  # Zde můžete vložit příkaz pro třetí položku menu
    4) exit ;;  # Konec skriptu
    *) echo "Neplatná volba. Zkuste to znovu." ;;
  esac
}

# Hlavní funkce menu
function main_menu() {
  while true; do
    show_menu
    read -p "Zvolte položku menu: " choice
    process_choice "$choice"
    read -p "Stiskněte Enter pro pokračování."
  done
}

# Spuštění hlavního menu
main_menu

Diskuze

Vaše e-mailová adresa nebude zveřejněna. Vyžadované informace jsou označeny *

Přejít nahoru