Shell 脚本 - 对话框
在本文中,我们将创建一个 shell 脚本,该脚本生成一个带有 GUI 的对话框,向用户生成一条消息。
什么是对话框?
对话框是应用程序运行以向用户传达重要信息的临时窗口。这些对话框可用于显示警告、错误以及来自最终用户的系统所需的任何其他输入。
在 Linux 中安装对话框实用程序:
对话框实用程序:对话框实用程序用于创建基于图形用户界面的对话框,可用于从用户那里获取任何重要信息。
需要安装的模块:
对于 Ubuntu 和 Debian Linux
sudo apt-get update
sudo apt-get install 1 dialog
对于 CentOS 或 Redhat Linux:
sudo yum install dialog
现在,让我们运行 Bash 脚本来创建对话框,请注意我们使用的是基于 ubuntu 的 Linux 虚拟机,但您可以在任何 Linux 发行版上尝试此操作,但请按照上述相应发行版的命令下载模块。
1. 用于创建问候用户对话框的 Shell 脚本:
在此,让我们创建一个为用户生成问候语的 shell 脚本。
外壳脚本:
#!/bin/bash
function DialogGen() {
dialog --title "Hello" --msgbox 'Hello GFG Users!' 6 20
}
DialogGen()
输出 :
- 在上面的 Shell 脚本中,我们在 Ubuntu 机器上生成了一个对话框,它使用 DialogGen函数向用户致意。它显示了一个消息框问候“Hello GFG 用户”,并带有一个确定按钮。
- 我们可以使用此对话框来显示我们选择的任何消息。
- 用户可以点击 ok 按钮,对话框退出,调用的 shell 脚本继续运行。
- 退出后,对话框的输出中不会出现任何文字,但会返回 ESC 类型的退出状态。
了解对话框中涉及的选项
现在,在上面创建的对话框中,让我们调试用于更好地了解对话框在 Linux 环境中的函数的选项。
- –title “Hello”:设置在对话框开头显示的标题字符串,作为创建对话框的标题。
- –msgbox 'Hello GFG Users !':这会向用户显示一条消息“Hello”,您可以自定义要问候最终用户的内容。
- 6:消息框高度的值。
- 20: msgbox框的宽度值。
现在,让我们看看可以使用 Dialog 工具使用 shell 脚本创建的各种小部件。
2. Shell 脚本显示带有日历的对话框:
句法 :
-checklist
消息.sh:
#!/bin/bash
function DialogGen
{
dialog --calendar "calendar" 5 50 12 02 2022
}
DialogGen
输出 :
了解上述对话框中使用的选项:
- –calendar:此关键字用于显示对话框的标题。
- –5 50 12 02 2022: 5 是高度的值,50 是宽度,12 02 2022 是今天的日期。
3. Shell 脚本生成用于显示清单小部件的对话框。
让我们创建一个生成水果和蔬菜清单的 shell 脚本:
消息.sh:
#!/bin/bash
function DialogGen
{
dialog –checklist ‘checklist’ 15 10 10 ‘potato’ 5 ‘on’ ‘carrot’ 2 ‘off’ ‘grape’ 3 ‘on’ ‘cabbage; 4 ‘off’
}
DialogGen
输出 :
了解上述对话框中使用的选项:
- –Checklist “checklist”: Checklist 关键字启动清单,后跟用作对话框标题的文本。
- –15 10 10:高度为 15,然后为宽度设置 10 值,并为列表高度设置 10。
- --'potato' 5 'on':这里的土豆是 item1 是土豆,后跟 5 设置为标签值,on 是清单框的状态(它是打开或关闭)。
4. 使用对话框工具创建 msgbox 的 Shell 脚本:
让我们尝试在 Linux 机器上创建一个向用户显示文本消息的 msgbox。
句法 :
–msgbox
消息.sh:
#!/bin/bash
function DialogGen
{
–msgbox “Hi geeks, hope everyone are enjoying GeeksForGeeks” 10 30
}
DialogGen
输出 :
了解上述对话框中使用的选项:
- -msgbox :此关键字在 shell 控制台上启动 msgbox 对话框。
- -text:此文本包括我们想要传达给最终用户的消息。
- -10:这是为高度设置的值。
- -30 :为宽度设置的值。
5. 生成仪表对话框的Shell脚本:
让我们生成一个 shell 脚本函数,在 shell 控制台上显示对话框的仪表类型。
句法 :
--gauge []
消息.sh:
#!/bin/bash
function DialogGen
{
--gauge "in progress..." 10 20 40
}
DialogGen
输出 :
6. 生成表单对话框的Shell脚本:
让我们生成一个在控制台 shell 上显示表单的 shell 脚本函数。
句法 :
–form
消息.sh:
function DoalogGen
{
dialog –form “please enter the required information” 12 40 4 “Name:” 1 1 “” 1 12 15 0 \ “Age:” 2 1 “” 2 12 15 0 “Mail id:” 3 1 “” 3 12 15 0
}
DialogGen
输出 :
7.在Linux机器上生成信息框对话框的Shell脚本:
在此,让我们生成一个运行信息框对话框的 Shell 脚本函数。
句法 :
--infobox
消息.sh:
#!/bin/bash
function DialogGen
{
dialog –infobox “Geeks, this is just a sample message” 10 31
}
DialogGen
输出 :
8.在Linux机器上生成输入框对话框的Shell脚本:
在此,我们尝试生成一个运行输入框类型对话框的 Shell Script函数。
句法 :
-inputbox []
消息.sh:
#!/bin/bash
function DialogGen
{
dialog –inputbox “geeks, please enter your name” 10 31 “enter here”
}
DialogGen
输出 :
9.Shell脚本生成InputMenu对话框
现在,让我们编写一个 shell 脚本函数来在 Linux 机器上生成 InputMenu 对话框。
句法 :
–inputmenu
消息.sh:
#!/bin/bash
function DialogGen
{
dialog–inputmenu “Edit if required,” 12 45 25 1 “hi” 2 “good morning” 3 “Take” “Care”
}
DialogGen
输出 :
10.从对话框生成菜单的Shell脚本:
在这个脚本中,我们尝试创建一个运行 Menu Widget Dialog Box 的 Shell 脚本函数。
语法:
–menu
消息.sh:
#!/bin/bash
function DialogGen
{
dialog–menu “choose your favouirite fruit” 12 45 25 1 “apple” 2 “banana” 3 “grapes” 4 “oranges”
}
DialogGen
输出 :
11.创建是/否框的Shell脚本:
在此脚本中,我们生成了一个函数,该函数向用户显示带有是或否选项的对话框 GUI。
句法 :
-yesno
脚本 :
消息.sh:
#!/bin/bash
function DialogGen
{
dialog –yesno “Hey Geek, Do You Want To Continue With Current Session?” 10 31
}
DialogGen
输出 :
12.设计密码框的Shell脚本:
在这个脚本中,我们的工作是生成一个函数,显示一个带有隐藏文本字段的密码表单。
句法 :
–passwordform
脚本 :
消息.sh:
#!/bin/bash
function DialogGen
{
dialog –passwordform “Hey Geek, please enter required information:” 12 40 4 “password:” 1 1 “” 1 12 15 0 “otp:” 2 1 “” 2 12 15 0 “secret key:” 3 1 “” 3 12 15 0
}
DialogGen
输出 :
13.显示单选框对话框的Shell脚本:
在此,让我们在 shell 脚本中运行一个函数,在 Linux 机器上生成 Radio Box Dialogue:
句法 :
–radiolist
脚本 :
#/bin/bash
function DialogGen()
{
dialog –radiolist ‘radiolist’ 15 10 10 ‘Grapes’ 5 ‘off’ ‘apple’ 2 ‘off’ ‘dessert’ 3 ‘off’ ‘coffe’ 4 ‘on’
}
DialogGen
输出 :