bash 脚本 - 通过 gui 请求输入

bash 脚本 - 通过 gui 请求输入

我目前正在 bash 中编写 nemo 操作脚本,我需要一种方法来获取用户的输入。

如何?运行操作脚本时终端不显示。

有没有办法在 GUI 中弹出一个查询窗口来要求用户输入?

答案1

Zenity 是一个很好的工具。

user_input=$(zenity --entry)

无论用户在 GUI 窗口中键入什么内容,都会将其分配给变量user_input,除非用户按下取消键,在这种情况下退出代码不为零。

user_input=$(zenity --entry)
if [ $? = 0 ]; then 
    echo "User has pressed OK. The input was:"
    echo "$user_input"
else
    echo "User has pressed cancel"
fi

Gxmessage 是一种替代方案,具有非常相似的语法。

user_input=$(gxmessage --entry "Enter your input")

更多信息请参见man zenityman gxmessage

答案2

  • 如果您想留在 shell 中,请使用dialog(几乎每个发行版都已经默认安装了它)。
    在使用它之前,请阅读联机帮助页,以便您可以将其配置为完全执行您想要的操作。一个小例子:
dialog --inputbox "Please input something" 0 0 2> /tmp/file_that_will_contain_your_input
  • 如果想要出现 X11 窗口,请查看 xdialog。但我建议留在 shell 中:
    编写部分使用 X11 和部分使用控制台的脚本会带来问题,但不会获得任何优势。出于兼容性原因,
    的语法xdialog与 的语法几乎相同。dialog因此,如果您在上面的示例前面放置 ,x它会执行完全相同的操作,但会使用 X11 窗口。再次,请查看联机帮助页以获取更多信息。

相关内容