zoukankan      html  css  js  c++  java
  • 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/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
  • 相关阅读:
    Super Mario
    SPOJ Count on a tree
    SPOJ DQUERY
    51nod 区间中第K大的数
    POJ2104 K-th Number
    矩阵模板
    Sasha and Array
    MVC RenderSection
    Lazy Acquisition
    .net4.5 await async 简化之后的异步编程模型
  • 原文地址:https://www.cnblogs.com/kelamoyujuzhen/p/10848043.html
Copyright © 2011-2022 走看看