linux - Bash 脚本菜单循环

标签 linux bash loops menu

我创建了一个菜单函数,并且能够接受输入并在输入时调用该函数。我只是想知道在完成一个功能后我应该如何让它再次调用菜单。

我这里有一个我正在寻找的例子。我有一个菜单及其功能。我只是希望在使用其中一项功能后能够循环回到菜单。这可能是一个简单的修复,但我找了很多地方,但找不到我要找的东西。

#!/bin/sh
function Main_Menu
clear
echo "Select an option ..."
printf "\n"
echo "1 - Check Free Disk Space"
echo "2 - List Directories"
echo "3 - Show Running Processes"
echo "4 - TCP Connections"
echo "5 - Network Interfaces"
echo "6 - Show PATH"
echo "7 - Show Computer Hostname"
echo "8 - Routing Table"
echo "9 - Computer Uptime"
echo "10 - Available Block Devices"
echo "11 - Mount Device"
echo -n "Input desired function number and press ENTER: "
read user_input    
if [ "$user_input" = "1" ]
then
    Check_Disk
elif [ "$user_input" = "2" ]
then
    List_Dir
elif [ "$user_input" = "3" ]
then
    Show_Run
elif [ "$user_input" = "4" ]
then
    TCP_Con
elif [ "$user_input" = "5" ]
then
    Net_Int
elif [ "$user_input" = "6" ]
then
    Show_Path
elif [ "$user_input" = "7" ]
then
    Host_Name
elif [ "$user_input" = "8" ]
then
    Route_Table
elif [ "$user_input" = "9" ]
then
    Up_time
elif [ "$user_input" = "10" ]
then
    Block_Dev
elif [ "$user_input" = "11" ]
then
    Mount_Dev
else
    Main_Menu
fi

function Check_Disk
clear

freedisk=$( df -h  )

echo "$freedisk"

then
    Main_Menu

else
    CheckDisk
fi

最佳答案

对于菜单来说似乎有点长,我会使用类似的东西:

function f_list_nodes {
echo "some stuff"
}
function f_add_nodes {
echo "some stuff 2"
}
function f_del_nodes {
echo "some stuff 3"
}

function m_main_menu {
while [ 1 ]
do
    PS3='Choose a number: '
    select choix in "listnodes" "addnode" "delnode" "quit"
    do
        break
    done
    case $choix in
        listnodes)  f_list_nodes;;
        addnode)    f_add_node;;
        delnode)    f_del_node;;
        quit)       exit ;;
        *)      echo "nope" ;;
    esac
done
}

m_main_menu

关于linux - Bash 脚本菜单循环,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46474646/

相关文章:

bash - 计算时bash中的变量错误

linux - 从 less 复制特定行

linux - 读取文件并将每一行拆分为多个变量

linux - 如何在使用同一网关运行的同一子网上路由具有 2 个公共(public) IP 的 2 个网卡

bash - 如何为 bash 详细模式设置前缀

javascript - 在 shell 脚本循环中运行 Node JS 文件

php循环抛硬币直到出现2个正面,然后停止

swift - 如何通过按其他按钮来更改一个按钮的图像?

c++ - 通过 Mmap-ed 共享内存传递可变长度的 C 字符串

linux - 无法从 bash 脚本中获取带有空格的路径?