在实际使用GUI对话框之前,请考虑使用控制台提示。通常,您可以通过简单的“是/否”来逃避。提示,这可以通过bash在read
命令中实现。
read -p "Do something? ";
if [ $REPLY == "y" ]; then
echo yay;
fi
如果控制台提示符不会被删除,那么Zenity确实非常易于使用,例如:
zenity --error --text="Testing..."
zenity --question --text="Continue?"
这仅在Linux / Gnome上有效(或者,仅在此类系统上默认安装)。该read
方法几乎可以在任何平台上运行(包括无头计算机或通过SSH)
如果您需要比阅读书或Zenity提供的东西更复杂的东西,那么“更改为C ++”确实是最好的方法(尽管我建议在C ++中使用Python / Ruby代替Shell / script替换任务)
我想为一些奇怪的游戏做一个简单的界面,为健康而设计的进度条就是我想要的例子。变量“健康”为34,因此将进度条填充为34/100
作为命令行脚本,它将使用Python:
$ export HEALTH=34
$ python -c "import os; print '*' * int(os.environ.get('HEALTH', 0))"
**********************************
或者将1到78之间的值归一化(这样就不会在标准端子尺寸上出现换行):
$ python -c "import os; print '*' * int((int(os.environ.get('HEALTH', 0)) / 100.0) * 78)"
Zenity还有一个“进度对话框”,
#!/bin/sh
(
echo "10" ; sleep 1
echo "# Updating mail logs" ; sleep 1
echo "20" ; sleep 1
echo "# Resetting cron jobs" ; sleep 1
echo "50" ; sleep 1
echo "This line will just be ignored" ; sleep 1
echo "75" ; sleep 1
echo "# Rebooting system" ; sleep 1
echo "100" ; sleep 1
) |
zenity --progress \
--title="Update System Logs" \
--text="Scanning mail logs..." \
--percentage=0
if [ "$?" = -1 ] ; then
zenity --error \
--text="Update canceled."
fi
正如我之前说的,如果Zenity无法满足您的需要,请考虑使用Python / Ruby / Perl / C ++ / etc中的“适当”脚本来编写游戏内容,因为这听起来像是在推动shell的发展。 -script可以做..
zenity
。