加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 综合聚焦 > 服务器 > Linux > 正文

Linux命令——whiptail交互式shell脚本对话框

发布时间:2020-12-14 01:16:04 所属栏目:Linux 来源:网络整理
导读:转自:交互式shell脚本对话框----whiptail指令 当你在linux环境下setup软件的时候就会有相应的对话框让你输入。虽然我们已经习惯了这种交互的方法,但是如果有一种直观的界面来输入是不是会更加友好和方便呢,在shell脚本中你可以使用-whiptail指令来完成。

转自:交互式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/bash
if? (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/bash
if? (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/bash
NAME = $(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:"? $NAME
else
???? 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/bash
PASSWORD = $(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:"? $PASSWORD
else
???? 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/bash
OPTION = $(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:"? $OPTION
else
???? 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/bash
DISTROS = $(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:"? $DISTROS
else
???? 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/bash
DISTROS = $(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:"? $DISTROS
else
???? 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

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读