下面我们介绍两个Bash Shell对话框工具:zenity、whiptail,这两个工具提供了更人性化的交互方式。这两个工具的不同在于,Zenity使用GTK创建对话框,而whiptail在终端命令行内创建对话框。
zenity 在Ubuntu上安装: $ sudo apt-get install zenity
下面提供几个例子。 创建消息框 zenity --info --title "hello you" --text "some error occur" --width=200 --height=150
创建带Yes\No的对话框 zenity --question --text "Are you sure?" --ok-label "Yes" --cancel-label="No"
创建带输入的对话框 input=$(zenity --entry --title "Input" --text "type some text" --width=200 --height=150) echo $input
完整的一个脚本示例: #!/bin/bash zenity --question --text "continue?" [ $? -eq 0 ] || exit 1 first_value=$(zenity --entry --title "Input" --text "type some text" --width=200 --height=150) second_value=$(zenity --entry --title "Input" --text "type some text" --width=200 --height=150) zenity --info --title "input value" --text "${first_value} ${second_value}" --width=300 --height=100
最后,不要忘了使用帮助: $ zenity --help
whiptail 在Ubuntu上安装: $ sudo apt-get install whiptail
下面提供几个例子。 创建消息框 whiptail --msgbox "some error occur" 10 40
创建带Yes\No的对话框 whiptail --yes-button "Yes" --no-button "No" --title "are you sure?" --yesno "are you stupid" 10 30
创建带默认值的输入框 whiptail --inputbox "input your number" 10 30 "100"
注意:不能使用var=$(whiptail …)获得输入框的文本(对话框根本不会显示)。正确做法,使用stdout/stderr,在whiptail命令最后加3>&1 1>&2 2>&3。
创建菜单对话框 whiptail --menu "choose one" 20 50 10 1 "menu1" 2 "menu2" 3 "menu3"
完整的一个脚本示例: #!/bin/bash MY_PATH=$(whiptail --title "get folder size" --inputbox "input" 10 30 "/home" 3>&1 1>&2 2>&3) size=$(du -hs "$MY_PATH" | awk '{print $1}') whiptail --title "info" --msgbox "${size}" 10 40
注:使用man查看帮助。 |