使用 Whiptail 创建交互式 Shell 脚本

Whiptail 是一种工具,可让您从 shell 脚本显示对话框。 这使您的 shell 脚本看起来更酷、更专业,同时仍提供广泛的功能。

在本模块中,我们将学习如何使用 鞭尾 在你的 shell 脚本中使它们更好!

安装鞭尾

安装whiptail非常简单。 要安装它,只需键入:

$ sudo apt install whiptail 

鞭尾盒

Whiptail 有很多不同的盒子类型供您选择。 在这里,我们讨论了whiptail 提供的一些更重要的功能:

1. 添加是/否框

生成这样一个框的语法是:

$ whiptail --yesno [TEXT] [HEIGHT] [WIDTH] 

是/否框允许您根据用户的选择控制执行流程:

是 否 提示

如果用户选择是,则whiptail 返回值1,否则,如果用户选择否,则返回值0。如果whiptail 遇到错误或用户未指定选择就退出,则返回-1。

2. 消息框

生成消息框的语法是:

$ whiptail --msgbox [TEXT] [HEIGHT] [WIDTH] 

消息框与是/否框非常相似,只是它只带有一个确定按钮。 按提示存在 Enter 并且 shell 脚本继续执行。

消息框

3. 输入框

输入框是whiptail 的一些最重要的功能。 创建输入框的语法是:

$ whiptail --inputbox [TEXT] [HEIGHT] [WIDTH] [INIT] 

它还启用滚动,以便在输入字符串长于对话框宽度的情况下,输入字段将被滚动。 它还允许我们指定一个字符串 (INIT),我们可以用它来初始化我们的输入框。 它还允许用户在输入错误的情况下借助退格键对输入进行更正。

输入框输入框

默认情况下,它将消息打印到 标准错误 但是您也可以将输出存储在一个变量中,然后在您的 shell scipts 中使用它!

4. 密码箱

密码框与输入框非常相似,只是您输入的任何内容都不会反映给用户。 它的 synatx 也类似于输入框:

$ whiptail --passwordbox [TEXT] [HEIGHT] [WIDTH] [INIT] 

您还可以使用 INIT 指定一个“默认密码”,这并不是真正推荐的。

密码箱密码箱

4. 菜单框

顾名思义,菜单框为您提供了一个可供选择的选项列表。 相同的语法是:

$ whiptail --menu [TEXT] [HEIGHT] [WIDTH] [MENU HEIGHT] [TAG] [ITEM]  

在这里,我们还需要指定 MENU HEIGHT,它决定了 Prompt 菜单上将显示多少项。 然后我们需要指定一个 ITEM 和一个 TAG,用于识别该项目。 您可以指定任意数量,因为whiptail 允许滚动

菜单菜单

退出时,whiptail 会打印出选定的 TAG 到 标准错误.

5. 其他箱子

仍然有许多不同的盒子可用于鞭尾,例如:

  • 信息框
  • 清单框
  • 单选框
  • 仪表盒

您可以通过使用 man 命令来全面了解这些:

$ man whiptail 

鞭尾选项

您可以使用 flags 进一步自定义whiptail promts:

  • -清除 :退出时屏幕将被清除为屏幕属性。 如果启用了备用屏幕切换,这在 xterm(和后代)中不起作用,因为在这种情况下,俚语写入(并清除)备用屏幕。
  • –defaultno :对话框将打开,光标位于“否”按钮上。
  • –是按钮 [TEXT] :更改是按钮的文本
  • – 无按钮 [TEXT] : 更改无按钮的文本
  • – 在项目中 :菜单、清单和单选列表小部件将仅显示标签,而不是项目字符串。 菜单小部件仍然需要指定一些项目,但清单和单选单只需要标签和状态。
  • – 标签 :不要在菜单、清单和单选列表小部件中显示标签。
  • –输出-FD [FD] : 将whiptail 直接输出到特定的文件描述或者
  • -标题 [TEXT] : 设置框的标题

结论

因此,在本模块中,我们学习了如何有效地使用whiptail 来创建有效的shell 脚本。 这为您的 shell 脚本提供了非常专业的外观和更好的用户体验。 您甚至可以通过它的手册页进一步探索该工具!