Linux命令——whiptail交互式shell脚本对话框 交互式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

猜你喜欢

转载自www.cnblogs.com/kelamoyujuzhen/p/10848043.html