Home | 简体中文 | 繁体中文 | 杂文 | Github | 知乎专栏 | Facebook | Linkedin | Youtube | 打赏(Donations) | About
知乎专栏

6.4. whiptail - display dialog boxes from shell scripts

6.4.1. --msgbox

whiptail --title "Example Dialog" --msgbox "This is an example of a message box. You must hit OK to continue." 8 78
			
                                                               
 ┌─────────────────────────────┤ Example Dialog ├─────────────────────────────┐ 
 │                                                                            │ 
 │ This is an example of a message box. You must hit OK to continue.          │ 
 │                                                                            │ 
 │                                                                            │ 
 │                                   <Ok>                                     │ 
 │                                                                            │ 
 └────────────────────────────────────────────────────────────────────────────┘ 
                                                                                
			

6.4.2. --infobox

whiptail --title "Example Dialog" --infobox "This is an example of a message box. You must hit OK to continue." 8 78
			

6.4.3. --yesno

例 6.1. whiptail - yesno

#! /bin/bash
# http://archives.seul.org/seul/project/Feb-1998/msg00069.html
if (whiptail --title "PPP Configuration" --backtitle "Welcome to SEUL" --yesno "
Do you want to configure your PPP connection?"  10 40 )
then 
        echo -e "\nWell, you better get busy!\n"
elif    (whiptail --title "PPP Configuration" --backtitle "Welcome to
SEUL" --yesno "           Are you sure?" 7 40)
        then
                echo -e "\nGood, because I can't do that yet!\n"
        else
                echo -e "\nToo bad, I can't do that yet\n"
fi
				
whiptail --title "Example Dialog" --yesno "This is an example of a yes/no box." 8 78
 
exitstatus=$?
if [ $exitstatus = 0 ]; then
    echo "User selected Yes."
else
    echo "User selected No."
fi
 
echo "(Exit status was $exitstatus)"
				

设置--yes-button,--no-button,--ok-button 按钮的文本

whiptail --title "Example Dialog" --yesno "This is an example of a message box. You must hit OK to continue." 8 78 --no-button 取消 --yes-button 确认
			

6.4.4. --inputbox

例 6.2. whiptail - inputbox

result=$(tempfile) ; chmod go-rw $result
whiptail --inputbox "Enter some text" 10 30 2>$result
echo Result=$(cat $result)
rm $result
				
				
                         ┌────────────────────────────┐                         
                         │ Enter some text            │                         
                         │                            │                         
                         │ __________________________ │                         
                         │                            │                         
                         │                            │                         
                         │                            │                         
                         │    <Ok>        <Cancel>    │                         
                         │                            │                         
                         └────────────────────────────┘                         
				
				
				
COLOR=$(whiptail --inputbox "What is your favorite Color?" 8 78 --title "Example Dialog" 3>&1 1>&2 2>&3)
 
exitstatus=$?
if [ $exitstatus = 0 ]; then
    echo "User selected Ok and entered " $COLOR
else
    echo "User selected Cancel."
fi
 
echo "(Exit status was $exitstatus)"				
				
				

6.4.5. --passwordbox

例 6.3. whiptail - passwordbox

				
whiptail --title "Example Dialog" --passwordbox "This is an example of a password box. You must hit OK to continue." 8 78			
				
				

6.4.6. --textbox

例 6.4. whiptail - passwordbox

				
whiptail --title "Example Dialog" --textbox /etc/passwd 20 60
				
				

为文本取添加滚动条功能

whiptail --title "Example Dialog" --textbox /etc/passwd 20 60 --scrolltext
				

6.4.7. --checklist

例 6.5. whiptail - example 1

whiptail --title "Check list example" --checklist \
"Choose user's permissions" 20 78 16 \
"NET_OUTBOUND" "Allow connections to other hosts" ON \
"NET_INBOUND" "Allow connections from other hosts" OFF \
"LOCAL_MOUNT" "Allow mounting of local devices" OFF \
"REMOTE_MOUNT" "Allow mounting of remote devices" OFF
				

6.4.8. --radiolist

例 6.6. whiptail - radiolist

whiptail --title "Check list example" --radiolist \
"Choose user's permissions" 20 78 16 \
"NET_OUTBOUND" "Allow connections to other hosts" ON \
"NET_INBOUND" "Allow connections from other hosts" OFF \
"LOCAL_MOUNT" "Allow mounting of local devices" OFF \
"REMOTE_MOUNT" "Allow mounting of remote devices" OFF
				

6.4.9. --menu

			
whiptail --title "Menu example" --menu "Choose an option" 22 78 16 \
"<-- Back" "Return to the main menu." \
"Add User" "Add a user to the system." \
"Modify User" "Modify an existing user." \
"List Users" "List all users on the system." \
"Add Group" "Add a user group to the system." \
"Modify Group" "Modify a group and its list of members." \
"List Groups" "List all groups on the system."			
			
			
			
 ┌──────────────────────────────┤ Menu example ├──────────────────────────────┐ 
 │            <-- Back     Return to the main menu.                           │ 
 │            Add User     Add a user to the system.                          │ 
 │            Modify User  Modify an existing user.                           │ 
 │            List Users   List all users on the system.                      │ 
 │            Add Group    Add a user group to the system.                    │ 
 │            Modify Group Modify a group and its list of members.            │ 
 │            List Groups  List all groups on the system.                     │ 
 │                                                                            │ 
 │                                                                            │ 
 │                    <Ok>                        <Cancel>                    │ 
 │                                                                            │ 
 └────────────────────────────────────────────────────────────────────────────┘ 			
			
			

6.4.10. --gauge

			
#!/bin/bash
{
    for ((i = 0 ; i <= 100 ; i+=30)); do
        sleep 1
        echo $i
    done
} | whiptail --gauge "Please wait" 5 50 0