bash 脚本中基于对话框的决策?

bash 脚本中基于对话框的决策?

我正在尝试编写一个小 bash 脚本,根据一些 GUI 问题执行不同的操作。

这就是我现在的进展:

[Timomey@timomeyswetab ~]$ TEST=`zenity --question`; echo test=$TEST
test=
[Timomey@timomeyswetab ~]$ TEST=`zenity --question`; echo test=$TEST
test=
[Timomey@timomeyswetab ~]$ 

问题是它没有按预期工作。 TEST 变量应该有一些差异,但我看不到任何差异。我究竟做错了什么?

谢谢

答案1

zenity不会将您选择的结果写入标准输出。通过在命令行上运行来亲自尝试一下:

$ zenity --question
$

如您所见,没有显示任何内容,这就是变量TEST为空的原因。

相反,zenity返回 的值--question作为其退出状态。这可以通过$?内部变量来查看(在 bash 中)。

$ zenity --question

选择“否”按钮:

$ echo $?
$ 1

如手册页中所述,0 表示“是”,1 表示“否”,5 表示命令超时。

因此你的命令应该是:

$ zenity --question; echo test=$?
$ test=1

请注意,不同的zenity命令有不同的行为。正如手册页所解释的,该--entry命令确实将其输出发送到 std-out:

$ zenity --entry
$ Test 1..2..3..

因此,您的测试将使用此特定命令。

相关内容