zoukankan      html  css  js  c++  java
  • 交互式shell脚本对话框----whiptail指令

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

    消息框

    语法:

    whiptail --title "<message box title>" --msgbox "<text to show>" <height> <width> 

    实例:

    whiptail --title "Message box title" --msgbox " Choose Ok to continue." 10 60

     yes/no对话框

    语法:

    whiptail --title "<dialog box title>" --yesno "<text to show>" <height> <width> 

    实例:

    #!/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

    或者也可以是自定义的选项,实例如下:

    #!/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。

    表单输入框

    语法:

    whiptail --title "<input box title>" --inputbox "<text to show>" <height> <width> <default-text>
    

    实例:

    #!/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

     密码输入框

    语法:

    whiptail --title "<password box title>" --passwordbox "<text to show>" <height> <width>
    

    实例:

    #!/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

    菜单栏

    提供一个单项选择的菜单栏

    语法:

    whiptail --title "<menu title>" --menu "<text to show>" <height> <width> <menu height> [ <tag> <item> ] . . .
    

    实例:

    #!/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对话框

    该对话框是单选对话框,你可以控制默认的选择位置,即使你在脚本中默认选择多个,他也只会输出一个结果

    语法:

    whiptail --title "<radiolist title>" --radiolist "<text to show>" <height> <width> <list height> [ <tag> <item> <status> ] . . .

    实例:

    #!/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  

    多选对话框

     

    语法:

    whiptail --title "<checklist title>" --checklist "<text to show>" <height> <width> <list height> [ <tag> <item> <status> ] . . .

    实例:

    #!/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  

    进度条

    语法:

    whiptail --gauge "<test to show>" <height> <width> <inital percent>

    实例:

    #!/bin/bash
    {
        for ((i = 0 ; i <= 100 ; i+=20)); do
            sleep 1
            echo $i
        done
    } | whiptail --gauge "Please wait while installing" 6 60 0
    

      

    参考链接:https://www.cnblogs.com/probemark/p/5890599.html

  • 相关阅读:
    js 判断用户是否联网
    vue cli 2.9.6 低版本安装失败
    'webpack-dev-server' 不是内部或外部命令,也不是可运行 的程序 或批处理文件。
    Jenkins创建运行用例
    python的类变量和成员变量
    Airtest移动端自动化测试环境搭建 一
    pytest使用总结笔记
    Python单元测试框架之pytest---如何执行测试用例
    UI自动化之分层思想pom模式
    【Fiddler篇】抓包工具之Filters(过滤器)进行会话过滤
  • 原文地址:https://www.cnblogs.com/panyouming/p/8511022.html
Copyright © 2011-2022 走看看