bash 脚本 - 通过 gui 请求输入

JoB*_*oBe 3 gui shell-script user-input nemo

我目前正在用 bash 编写一个 nemo 动作脚本,我需要一种方法来从用户那里获取输入。

怎么办?,运行动作脚本时终端不显示。

反正有没有在GUI中弹出一个查询窗口来询问用户输入?

Gar*_*aro 7

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


Qua*_*odo 6

Zenity 是一个很好的工具。

user_input=$(zenity --entry)
Run Code Online (Sandbox Code Playgroud)

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

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
Run Code Online (Sandbox Code Playgroud)

Gxmessage 是另一种选择,具有非常相似的语法。

user_input=$(gxmessage --entry "Enter your input")
Run Code Online (Sandbox Code Playgroud)

更多信息man zenityman gxmessage