建立互動式shell指令碼對話方塊
當你在終端環境下安裝新的軟體時,你可以經常看到資訊對話方塊彈出,需要你的輸入,比如:RHEL/
自帶的setup,對話方塊的型別有密碼箱、檢查表、選單等等。他們可以引導你以一種直觀的方式輸入必要的資訊,使用這樣的使用者友好的對話方塊的好處是顯而易見的。
如下圖所示:
當你寫一個互動式
,你可以使用這樣的對話方塊來接受使用者的輸入。whiptail可以在shell
中建立基於終端的對話方塊,訊息框的過程,類似於Zenity或xdialog GUI指令碼程式碼。whiptail預先安裝在所有的Linux釋出版本中。
建立一個訊息框
一個訊息框中顯示一個確認按鈕繼續任意的文字訊息。
語法:
whiptail --title "<message box title>" --msgbox "<text to show>" <height> <width>
例項:
#!/bin/bash whiptail --title "Test Message Box" --msgbox "Create a message box with whiptail. Choose Ok to continue." 10 60
建立一個yes/no對話方塊
使用者輸入yes或no的對話方塊。
語法:
whiptail --title "<dialog box title>" --yesno "<text to show>" <height> <width>
例項:
#!/bin/bash if (whiptail --title "Test 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
或者,你可以是“--yes-button” ,"--no-button"選項。
#!/bin/bash if (whiptail --title "Test Yes/No Box" --yes-button "Skittles" --no-button "M&M's" --yesno "Which do you like better?" 10 60) then echo "You chose Skittles Exit status was $?." else echo "You chose M&M's. Exit status was $?." fi
建立一個表單輸入框
如果你想使用者輸入任意的文字,您可以使用一個輸入框。
語法:
whiptail --title "<input box title>" --inputbox "<text to show>" <height> <width> <default-text>
例項:
#!/bin/bash PET=$(whiptail --title "Test Free-form Input Box" --inputbox "What is your pet's name?" 10 60 Wigglebutt 3>&1 1>&2 2>&3) exitstatus=$? if [ $exitstatus = 0 ]; then echo "Your pet name is:" $PET else echo "You chose Cancel." fi
建立一個密碼框
當使用者需要輸入敏感資訊時密碼框是有用的。
語法:
whiptail --title "<password box title>" --passwordbox "<text to show>" <height> <width>
例項:
#!/bin/bash PASSWORD=$(whiptail --title "Test 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 "Test Menu Dialog" --menu "Choose your option" 15 60 4 \ "1" "Grilled Spicy Sausage" \ "2" "Grilled Halloumi Cheese" \ "3" "Charcoaled Chicken Wings" \ "4" "Fried Aubergine" 3>&1 1>&2 2>&3) exitstatus=$? if [ $exitstatus = 0 ]; then echo "Your chosen option:" $OPTION else echo "You chose Cancel." fi
建立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
建立一個表對話方塊
當你想讓使用者選擇一個列表中選擇多個選項的清單對話方塊是有用的,radiolist對話方塊,只允許選擇一個。
語法:
whiptail --title "<checklist title>" --checklist "<text to show>" <height> <width> <list height> [ <tag> <item> <status> ] . . .
例項:
#!/bin/bash DISTROS=$(whiptail --title "Test 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從標準輸入讀取一個百分數(0~100),顯示一個表內相應的計數。
語法:
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
原文來自:
來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/69955379/viewspace-2903274/,如需轉載,請註明出處,否則將追究法律責任。
相關文章
- 如何在 Bash Shell 指令碼中顯示對話方塊指令碼
- 對話方塊函式函式
- shell指令碼-免互動指令碼
- 互動式指令碼指令碼
- shell擴充套件——免互動指令碼套件指令碼
- 登入對話方塊
- Android 官方推薦 : DialogFragment 建立對話方塊AndroidFragment
- linux透過shell指令碼實現ssh互動式自動化Linux指令碼
- c#中的模態對話方塊和非模態對話方塊C#
- [MFC]選擇目錄對話方塊和選擇檔案對話方塊
- MFC 對話方塊中動態建立N級選單以及響應事件事件
- JavaScript視窗功能指南之建立對話方塊 (轉)JavaScript
- flutter demo (四):對話方塊Flutter
- Javascript檔案對話方塊JavaScript
- 類似QQ對話方塊上下部分可拖動程式碼
- css氣泡對話方塊程式碼例項CSS
- 自動建立samba目錄的shell指令碼Samba指令碼
- React中的模式對話方塊React模式
- 在 Flutter 使用 GetX 對話方塊Flutter
- Qt 對話方塊新增工具欄QT
- 如何自學qt(4)——對話方塊QT
- QT 等待對話方塊/進度QT
- android 多項對話方塊Android
- Android Dialog對話方塊Android
- DialogPane對話方塊佈局
- InstallShield自定義對話方塊模板程式碼(轉)
- 快速建立分支Shell指令碼指令碼
- 視窗和對話方塊居中對齊
- VUE:點選開啟的對話方塊外面時,對話方塊總是被關閉Vue
- 直播原始碼網站,實現對話方塊的左滑動刪除原始碼網站
- Flutter Widgets 對話方塊-DialogFlutter
- 常用元件 / 對話方塊及選單元件
- Qt標準對話方塊實現QT
- TWebBrowser禁止彈出Alert對話方塊Web
- 一個Flex 對話方塊的坑Flex
- android常用對話方塊封裝Android封裝
- javascript中的彈出對話方塊JavaScript
- JavaScript彈出儲存對話方塊JavaScript