在Linux上我们不可避免的要接触到脚本,很多时候是别人写的,但有时自己也需要写一些脚本。
如何编写一个可以和用户进行交互的脚本呢,第一种方法,从命令行传入
#!/bin/bash
start()
{
echo "启动系统"
}
stop()
{
echo "停止系统"
}
restart1()
{
stop
start
}
case "$1" in
restart1)
restart1
;;
start)
start
;;
stop)
stop
;;
restart)
stop
start
;;
*)
echo $"使用方法: $0 {start|restart1|stop|restart}"
echo "启动|停止所有|停止再启动"
RETVAL=1
esac
解释:$0,$1表示脚本传输的参数,其中$0表示命令本身,$1表示第一个参数
case 为分支语句,根据输入的第一个参数的值做不同的程序转向。比如输入的参数为start,则调用start函数。
start(),stop(),restart1()分别为3个函数,在分支语句中进行调用。
使用效果如下:

第二种方式,采集每次用于的输入,进行判断后执行不同的命令,可以有简单界面,可反复进行各种交互。
#!/bin/bash
installSoft1(){
echo "安装软件1完毕"
}
installSoft2(){
echo "安装软件2完毕"
}
#主菜单
main_menu() {
while true; do
clear
echo "*******************************"
echo "* 测试工具 V2024-11-29 *"
echo "*******************************"
echo "1. 安装软件1"
echo "2. 安装软件2"
echo "0. 退出"
while true; do
read -p "输入命令: " choice
case $choice in
1)
read -p "确认要安装软件1吗?5确认,其他放弃: " choiceChild
if [ "$choiceChild" = "5" ]; then
installSoft1
else
echo "用户放弃安装软件1"
fi
read -p "按Enter键以继续..."
break
;;
2)
installSoft2
read -p "按Enter键以继续..."
break
;;
0)
echo "退出脚本"
exit 0
;;
*)
echo "无效选择,请重新输入。"
;;
esac
done
done
}
main_menu
解释:脚本直接运行函数main_menu
在main_menu函数中用read命令检测用户输入,根据输入进行选择不同的函数执行
执行函数1时,用read命令再次进行确认。while循环保证菜单可以反复执行,直到退出。
执行效果如下:



1786

被折叠的 条评论
为什么被折叠?



