Linux命令——whiptail交互式shell脚本对话框
转自:交互式shell脚本对话框----whiptail指令
当你在linux环境下setup软件的时候就会有相应的对话框让你输入。虽然我们已经习惯了这种交互的方法,但是如果有一种直观的界面来输入是不是会更加友好和方便呢,在shell脚本中你可以使用-whiptail指令来完成。
消息框

语法:
|
1
|
whiptail --title "<message box title>" --msgbox "<text to show>" <height> <width> |
实例:
|
1
|
whiptail --title "Message box title" --msgbox " Choose Ok to continue." 10 60 |
yes/no对话框

语法:
|
1
|
whiptail --title "<dialog box title>" --yesno "<text to show>" <height> <width> |
实例:
|
1
2
3
4
5
6
|
#!/bin/bashif (whiptail --title "Yes/No Box" --yesno "Choose between Yes and No." 10 60) then echo "You chose Yes. Exit status was $?."else echo "You chose No. Exit status was $?."fi |
或者也可以是自定义的选项,实例如下:

|
1
2
3
4
5
6
|
#!/bin/bashif (whiptail --title "Yes/No Box" --yes-button "Man" --no-button "Woman" --yesno "What is your gender?" 10 60) then echo "You chose Man Exit status was $?."else echo "You chose Woman. Exit status was $?."fi |
当选择左边选项的时候输出的是0,选择右边选项的时候输出的是1。
表单输入框

语法:
|
1
|
whiptail --title "<input box title>" --inputbox "<text to show>" <height> <width> <default-text> |
实例:
|
1
2
3
4
5
6
7
8
9
|
#!/bin/bashNAME=$(whiptail --title "Free-form Input Box" --inputbox "What is your pet's name?" 10 60 Peter 3>&1 1>&2 2>&3)exitstatus=$?if [ $exitstatus = 0 ]; then echo "Your name is:" $NAMEelse echo "You chose Cancel."fi |
密码输入框

语法:
|
1
|
whiptail --title "<password box title>" --passwordbox "<text to show>" <height> <width> |
实例:
|
1
2
3
4
5
6
7
8
9
|
#!/bin/bashPASSWORD=$(whiptail --title "Password Box" --passwordbox "Enter your password and choose Ok to continue." 10 60 3>&1 1>&2 2>&3)exitstatus=$?if [ $exitstatus = 0 ]; then echo "Your password is:" $PASSWORDelse echo "You chose Cancel."fi |
菜单栏
提供一个单项选择的菜单栏

语法:
|
1
|
whiptail --title "<menu title>" --menu "<text to show>" <height> <width> <menu height> [ <tag> <item> ] . . . |
实例:
|
1
2
3
4
5
6
7
8
9
10
11
12
13
|
#!/bin/bashOPTION=$(whiptail --title "Menu Dialog" --menu "Choose your favorite programming language." 15 60 4 \"1" "Python" \"2" "Java" \"3" "C" \"4" "PHP" 3>&1 1>&2 2>&3)exitstatus=$?if [ $exitstatus = 0 ]; then echo "Your favorite programming language is:" $OPTIONelse echo "You chose Cancel."fi |
此处的选择输出的内容为你选择的标签的‘tag’位置,上面实例中的‘1’、‘2’、‘3’、‘4’
radiolist对话框
该对话框是单选对话框,你可以控制默认的选择位置,即使你在脚本中默认选择多个,他也只会输出一个结果
语法:
|
1
|
whiptail --title "<radiolist title>" --radiolist "<text to show>" <height> <width> <list height> [ <tag> <item> <status> ] . . . |
实例:
|
1
2
3
4
5
6
7
8
9
10
11
12
13
14
|
#!/bin/bashDISTROS=$(whiptail --title "Test Checklist Dialog" --radiolist \"What is the Linux distro of your choice?" 15 60 4 \"debian" "Venerable Debian" ON \"ubuntu" "Popular Ubuntu" OFF \"centos" "Stable CentOS" OFF \"mint" "Rising Star Mint" OFF 3>&1 1>&2 2>&3)exitstatus=$?if [ $exitstatus = 0 ]; then echo "The chosen distro is:" $DISTROSelse echo "You chose Cancel."fi |
多选对话框

语法:
|
1
|
whiptail --title "<checklist title>" --checklist "<text to show>" <height> <width> <list height> [ <tag> <item> <status> ] . . . |
实例:
|
1
2
3
4
5
6
7
8
9
10
11
12
13
14
|
#!/bin/bashDISTROS=$(whiptail --title "Checklist Dialog" --checklist \"Choose preferred Linux distros" 15 60 4 \"debian" "Venerable Debian" ON \"ubuntu" "Popular Ubuntu" OFF \"centos" "Stable CentOS" ON \"mint" "Rising Star Mint" OFF 3>&1 1>&2 2>&3)exitstatus=$?if [ $exitstatus = 0 ]; then echo "Your favorite distros are:" $DISTROSelse echo "You chose Cancel."fi |
进度条

语法:
|
1
|
whiptail --gauge "<test to show>" <height> <width> <inital percent> |
实例:
|
1
2
3
4
5
6
7
|
#!/bin/bash{ for ((i = 0 ; i <= 100 ; i+=20)); do sleep 1 echo $i done} | whiptail --gauge "Please wait while installing" 6 60 0 |
Linux命令——whiptail交互式shell脚本对话框的更多相关文章
- 【读书笔记】Linux命令行与Shell脚本编程大全
Linux命令行与Shell脚本编程大全 5.2 shell 的父子关系 命令分组 Command Grouping 主要有两种形式: 一种以小括号包括,命令之间以冒号分隔.也被称为 进程列表: 注意 ...
- 自学Linux命令行与Shell脚本之路
自学Linux命令行与Shell脚本之路[第一回]:初识Linux 1.1 自学Linux Shell1.1-Linux初识 1.2 自学Linux Shell1.2-Linux目录结构 1.3 ...
- Linux命令行与shell脚本编程大全.第3版(文字版) 超清文字-非扫描版 [免积分、免登录]
此处免费下载,无需账号,无需登录,无需积分.收集自互联网,侵权通知删除. 点击下载:Linux命令行与shell脚本编程大全.第3版 (大小:约22M)
- 《Linux命令行与shell脚本编程大全 第3版》创建实用的脚本---11
以下为阅读<Linux命令行与shell脚本编程大全 第3版>的读书笔记,为了方便记录,特地与书的内容保持同步,特意做成一节一次随笔,特记录如下:
- 《Linux命令行与shell脚本编程大全 第3版》高级Shell脚本编程---47
以下为阅读<Linux命令行与shell脚本编程大全 第3版>的读书笔记,为了方便记录,特地与书的内容保持同步,特意做成一节一次随笔,特记录如下:
- 《Linux命令行与shell脚本编程大全 第3版》Shell脚本编程基础---57
以下为阅读<Linux命令行与shell脚本编程大全 第3版>的读书笔记,为了方便记录,特地与书的内容保持同步,特意做成一节一次随笔,特记录如下:
- 《Linux命令行与shell脚本编程大全 第3版》Linux命令行---57
以下为阅读<Linux命令行与shell脚本编程大全 第3版>的读书笔记,为了方便记录,特地与书的内容保持同步,特意做成一节一次随笔,特记录如下:
- 《Linux命令行与shell脚本编程大全 第3版》Linux命令行---56
以下为阅读<Linux命令行与shell脚本编程大全 第3版>的读书笔记,为了方便记录,特地与书的内容保持同步,特意做成一节一次随笔,特记录如下:
- 《Linux命令行与shell脚本编程大全 第3版》Linux命令行---55
以下为阅读<Linux命令行与shell脚本编程大全 第3版>的读书笔记,为了方便记录,特地与书的内容保持同步,特意做成一节一次随笔,特记录如下:
随机推荐
- 【SpringBoot】SpringBoot日志框架(四)
日志框架介绍 在开发过程中,我们经常使用到日志来进行排查问题,我们使用的日志框架都是由2部分组成(日志API + 日志实现) 日志API(及日志抽象层)有:SLF4j(Simple Logging F ...
- (原)关于OpenSL ES播放音频数据的一个奇怪的问题
关于OpenSL ES播放音频数据的一个奇怪的问题 Author:lihaiping1603@aliyun.com 最近用业余时间做了一个android平台的播放器sdk,其中视频用的opengl e ...
- git clone 某个链接时候报错Initialized empty Git repository in 不能克隆
查看下是不是git是不是1.7.1版本. git --version 使用 yum -y update 更新一下. 再使用git clone 虽然还是会提示这个报错,但是可以克隆了.亲测有效. git ...
- CPU时序信号和分频
- go 单元测试框架介绍
最近项目在补充单元测试,这里介绍以下几个go里流行的单元测试框架. gomock gostub monkey Convey 下面介绍下各个框架的主要用途 convey 主要用途是用来组织测试用例的 g ...
- jq同一页面内容切换
$(function() { //选择标题显示 初始显示内容及样式 $('.right-content .right-item').eq(0).addClass('showcontent') $('. ...
- PHP7之Trait详解
转自: https://www.jianshu.com/p/fc053b2d7fd1 php从以前到现在一直都是单继承的语言,无法同时从两个基类中继承属性和方法,为了解决这个问题,php出了Trait ...
- netcore发布失败
2.2 发布Views <MvcRazorCompileOnPublish>true</MvcRazorCompileOnPublish> 导致 发布失败--------- ...
- error adding symbols:DSO missing from command line
编译时加上-lz,如果是使用eclipse,则在添加库z
- python学习-35 文件处理
1.简单的打开文件 f=open('test.txt',encoding='utf-8') # 打开了名字为test.txt的文件里的内容 data=f.read() # 读取里面的内容 print( ...