本教程我们通过实现来讲讲Linux交互式shell脚本中创建各种各样对话框,对话框在Linux中可以友好的提示操作者,感兴趣的朋友可以参考学习一下。
当你在终端环境下安装新的软件时,你可以经常看到信息对话框弹出,需要你的输入。对话框的类型有密码箱,检查表,菜单,等等。他们可以引导你以一种直观的方式输入必要的信息,使用这样的用户友好的对话框的好处是显而易见的。如下图所示:
当你写一个交互式shell脚本,你可以使用这样的对话框来接受用户的输入。whiptail可以在shell脚本中创建基于终端的对话框,消息框的过程,类似于Zenity或xdialog GUI脚本代码。预先安装在所有的Linux发布版本中。
下面来看看whiptail的用法:
创建一个消息框
一个消息框中显示一个确认按钮继续任意的文本消息。
语法:
whiptail –title “” –msgbox “”
实例:
#!/bin/bash
whiptail --title "Test Message Box" --msgbox "Create a message box with whiptail. Choose Ok to continue."
创建一个yes/no对话框
用户输入yes或no的对话框。
语法:
whiptail –title “” –yesno “”
实例:
#!/bin/bash
if (whiptail --title "Test Yes/No Box" --yesno "Choose between Yes and No." )then
echo "You chose Yes. Exit status was $?."
else
echo "You chose No. Exit status was $?"
fi
或者,你可以是“–yes-button” ,”–no-button”选项。
#!/bin/bash
if (whiptail --title "Test Yes/No Box" --yes-button "Skittles" --no-button "M&M's" --yesno "Which do you like better?" ) then
echo "You chose Skittles Exit status was $?."
else
echo "You chose M&M's. Exit status was $?."
fi
创建一个表单输入框
如果你想用户输入任意的文本,您可以使用一个输入框。
语法:
whiptail –title “” –inputbox “”
实例:
#!/bin/bash
PET=$(whiptail --title "Test Free-form Input Box" --inputbox "What is your pet's name?" Wigglebutt >& >& >&)
exitstatus=$?
if [ $exitstatus = ]; then
echo "Your pet name is:" $PET
else
echo "You chose Cancel."
fi
创建一个密码框
当用户需要输入敏感信息时密码框是有用的。
语法:
whiptail –title “” –passwordbox “”
实例:
#!/bin/bash
PASSWORD=$(whiptail --title "Test Password Box" --passwordbox "Enter your password and choose Ok to continue." >& >& >&)
exitstatus=$?
if [ $exitstatus = ]; then
echo "Your password is:" $PASSWORD
else
echo "You chose Cancel."
fi
创建一个菜单栏
当你想让用户选择一个任意数量的选择中,你可以使用菜单框。
语法:
whiptail –title “
” –menu “”
[ ] . . .
实例:
#!/bin/bash
OPTION=$(whiptail --title "Test Menu Dialog" --menu "Choose your option"
"" "Grilled Spicy Sausage"
"" "Grilled Halloumi Cheese"
"" "Charcoaled Chicken Wings"
"" "Fried Aubergine" >& >& >&)
exitstatus=$?
if [ $exitstatus = ]; then
echo "Your chosen option:" $OPTION
else
echo "You chose Cancel."
fi
创建radiolist对话框
语法:
whiptail –title “” –radiolist “” [ ] . . .
实例:
#!/bin/bash
DISTROS=$(whiptail --title "Test Checklist Dialog" --radiolist
"What is the Linux distro of your choice?"
"debian" "Venerable Debian" ON
"ubuntu" "Popular Ubuntu" OFF
"centos" "Stable CentOS" OFF
"mint" "Rising Star Mint" OFF >& >& >&)
exitstatus=$?
if [ $exitstatus = ]; then
echo "The chosen distro is:" $DISTROS
else
echo "You chose Cancel."
fi
创建一个表对话框
当你想让用户选择一个列表中选择多个选项的清单对话框是有用的,radiolist对话框,只允许选择一个。
语法:
whiptail –title “” –checklist “” [ ] . . .
实例:
#!/bin/bash
DISTROS=$(whiptail --title "Test Checklist Dialog" --checklist
"Choose preferred Linux distros"
"debian" "Venerable Debian" ON
"ubuntu" "Popular Ubuntu" OFF
"centos" "Stable CentOS" ON
"mint" "Rising Star Mint" OFF >& >& >&)
exitstatus=$?
if [ $exitstatus = ]; then
echo "Your favorite distros are:" $DISTROS
else
echo "You chose Cancel."
fi
创建一个进度条
进度条是一个用户友好的对话框。whiptail从标准输入读取一个百分数(0~100),显示一个表内相应的计数。
语法:
whiptail –gauge “”
实例:
#!/bin/bash
{
for ((i = ; i <= ; i+=)); do
sleep
echo $i
done
} | whiptail --gauge "Please wait while installing"
哈哈,,是多么容易在交互式shell脚本创建有用的对话框了吧。下次需要写一个交互式的shell脚本,试着用whiptail哈
本文来源 :详解Linux交互式shell脚本中创建对话框实例教程_linux服务器
详解Linux交互式shell脚本中创建对话框实例教程_linux服务器的更多相关文章
-
Linux/Unix shell 脚本中调用SQL,RMAN脚本
Linux/Unix shell脚本中调用或执行SQL,RMAN 等为自动化作业以及多次反复执行提供了极大的便利,因此通过Linux/Unix shell来完成Oracle的相关工作,也是DBA必不可 ...
-
linux,shell脚本中获取脚本的名字,使用脚本的名字。
需求描述: 写shell脚本的过程中,有时会需要获取脚本的名字,比如,有的时候,脚本 中会有usage()这种函数,可能就会用到脚本的名字. 实现方法: shell脚本中,通过使用$0就可以获取到脚本 ...
-
Linux centosVMware shell脚本中的逻辑判断、文件目录属性判断、if特殊用法、case判断
一.shell脚本中的逻辑判断 格式1:if 条件 ; then 语句; fi 格式2:if 条件; then 语句; else 语句; fi 格式3:if …; then … ;elif …; th ...
-
Linux下shell脚本中信号捕获和函数练习脚本之ping一个网段
该脚本主要的目的是练习在Linux bash脚本中捕获信号,顺便练习一下函数的使用,还有就是终止一个正在运行的程序后,该程序打开的文件的后续处理问题等等!脚本功能: ping一个网段内的IP,检测哪 ...
-
spring mvc DispatcherServlet详解之三---request通过ModelAndView中获取View实例的过程
整个spring mvc的架构如下图所示: 上篇文件讲解了DispatcherServlet第二步:通过request从Controller获取ModelAndView.现在来讲解第三步:reques ...
-
linux下shell脚本中sed命令的用法
先来给一个案例: #将old.sql文件中的符号“|”替换为“,”,并保存到test.sql文件中 sed "s/|/,/g" "old.sql"> te ...
-
linux下shell 脚本 中windows换行符换成linux换行符
sed -i 's/\r//' filename window下默认是 \r\n linux下是\n unix下是\r
-
创建交互式shell脚本对话框
当你在终端环境下安装新的软件时,你可以经常看到信息对话框弹出,需要你的输入,比如:RHEL/CentOS自带的setup,对话框的类型有密码箱.检查表.菜单等等.他们可以引导你以一种直观的方式输入必要 ...
-
shell脚本中常见的一些特殊符号和作用详解
这篇文章主要介绍了shell脚本中常见的一些特殊符号和它的作用详解,总结的很简洁,容易看懂,需要的朋友可以参考下 在编写Shell脚本时,我们需要会用到各种各样的特殊符号,通过这些特殊符号可以使我 ...
随机推荐
-
Asp.net mvc 添加Jquery UI
1.使用NuGet下载jquery ui Install-Package jQuery.UI.Combined 2.下载多语言文件: development-bundle/i18n目录下是jquery ...
-
web.xml 详细介绍(转)
web.xml 详细介绍 1.启动一个WEB项目的时候,WEB容器会去读取它的配置文件web.xml,读取<listener>和<context-param>两个结点. 2.紧 ...
-
web前端笔试题
1, 判断字符串是否是这样组成的,第一个必须是字母,后面可以是字母.数字.下划线,总长度为5-20 var reg = /^[a-zA-Z][a-zA-Z_0-9]{4,19}$/; reg.test ...
-
移动端开发的meta标签作用
一.<meta name="viewport" id="viewport" content="width=device-width, initi ...
-
使用Ctex总结1
使用Ctex应该是每一个做学术研究的人要学会掌握的. 它的基本结构: \documentclass[11pt,two side,a4paper]{cctart}%使用cctart可以让摘要变成中文,比 ...
-
NSStringUIImage~NSData的相互转换以及中文转码
中文转码 str = [str stringByAddingPercentEscapesUsingEncoding:NSUTF8StringEncoding]; 图片编码 NSData *data; ...
-
今天筹备了一件大事:重学JS
最近在阮大神的博客上看到一篇文章,讲的是关于如何自学计算机技术,原文出自 Teach Yourself Computer Science.看完以后我明白自己的缺陷在哪里,基础不够牢固是我最大的问题. ...
-
Jmeter实现dubbo接口压测案例
当前项目中重构了消息服务,需要对消息服务接口做性能压测,评估消息服务的性能情况 通过和开发对接,目前消息服务是通过dubbo接口对内提供服务,所以才有了这边文章的记录 最初的压测这个dubbo接口有三 ...
-
Jquery 图片走马灯效果原理
本篇只讲解水平走马灯效果,垂直向上走马灯效果不讲解,原理一样,但是水平走马灯效果有一个小坑.待会讲解 照例先上代码: HTML: <div class="box"> & ...
-
常用的web安全处理
1:用户名和密码认证通过后,必须更换会话标识,以防止会话固定(session fixation)漏洞. 实施指导: 在用户名和密码认证通过后增加以下两行代码: request.getSession() ...