大家好,波哥又来给大家推荐好东西啦!
如果大家有需要帮忙推荐的工具、框架、应用、脚本可以在文章下方留言,留言中被点赞、推荐回复较多的,波哥就会帮各位提前安排哦!
介绍
波哥为大家总结了四种常见的 shell 脚本菜单选择编码模式,每种模式都有其独特的优点和适用场景,是提升脚本交互性和用户体验的有效工具。首先,`select` 命令是创建简单循环菜单的一种极为便捷的方法。它能够自动生成一个带编号的选择列表,并提示用户进行输入,适合于需要实现基本菜单功能的场合。通过 `select` 命令,开发者能够迅速创建出直观且易于使用的选择界面,虽然其功能较为基础,但胜在简洁明了。
其次,结合 `read` 命令和 `case` 语句则提供了一种更为灵活的方案。这种方法允许对用户输入进行更复杂的处理和验证,适合于需要多种选择和复杂逻辑的情况。通过这种方式,开发者可以捕获用户的输入并根据输入执行不同的逻辑分支,从而实现更复杂的交互功能。
第三种方法是利用 `dialog` 工具创建图形化菜单。这种方式可以生成更具视觉吸引力的用户界面,使交互过程更加友好和直观。不过,这需要确保系统上已安装 `dialog` 工具。此外,图形化界面在某些环境下可能对用户更为友好,特别是在需要提升用户体验的应用中。
最后,`PS3` 提示符的使用可以在 `select` 命令中自定义选择提示。通过修改提示信息,开发者可以为用户提供更清晰的引导信息,这在选项较多或选项描述较长时尤为有用。了解和掌握这四种方法,可以帮助开发者根据具体的项目需求选择最合适的实现方式,进而编写出更加高效和用户友好的 shell 脚本。
1、msgbox
dialog --title text --msgbox "This is a test" 10 20
效果图
2、select
#!/usr/bin/env bash
# using select in the menu
function diskspace {
clear
df -k
}
function whoseon {
clear
who
}
function menusage {
clear
cat /proc/meminfo
}
PS3="Enter option:"
select option in "Display disk space" "Display logged on users" "Display memory usage" "Exit program"
do
case $option in
"Exit program")
break ;;
"Display disk space")
diskspace ;;
"Display logged on users")
whoseon ;;
"Display memory usage")
menusage ;;
*)
clear
echo "Sorry, wrong selection" ;;
esac
done
clear
效果图
3、脚本菜单
#!/usr/bin/env bash
function menu {
clear
echo
echo -e "\t\tSys Admin Menu\n"
echo -e "\t1. Display disk space"
echo -e "\t2. Display logged on users"
echo -e "\t3. Display memory usage"
echo -e "\t0. Exit program\n\n"
echo -en "\t\tEnter option:"
read -n 1 option
}
function diskspace {
clear
df -k
}
function whoseon {
clear
who
}
function menusage {
clear
cat /proc/meminfo
}
while [ 1 ]
do
menu
case $option in
0)
break ;;
1)
diskspace ;;
2)
whoseon ;;
3)
menusage ;;
*)
clear
echo "Sorry, wrong selection" ;;
esac
echo -en "\n\n\t\tHit any key to continue"
read -n 1 line
done
clear
效果图
4、dialog
#!/usr/bin/env bash
# using dialog to create a menu
temp=`mktemp -t test.XXXXXX`
temp2=`mktemp -t test2.XXXXXX`
function diskspace {
df -k > $temp
dialog --textbox $temp 20 60
}
function whoseon {
who > $temp
dialog --textbox $temp 20 50
}
function menusage {
cat /proc/meminfo > $temp
dialog --textbox $temp 20 50
}
while [ 1 ]
do
dialog --menu "Sys Admin Menu" 20 30 10 1 "Display disk space" 2 "Display users" 3 "Display memory usage" 0 "Exit" 2> $temp2
if [ $? -eq 1 ]
then
break
fi
selection=`cat $temp2`
case $selection in
1)
diskspace ;;
2)
whoseon ;;
3)
menusage ;;
0)
break ;;
*)
dialog --msgbox "Sorry,invalid selection" 10 30
esac
done
rm -f $temp 2> /dev/null
rm -f $temp2 2> /dev/null
效果图
觉得不错别忘了给波哥一键三连哦!