GUIダイアログを実際に使用する前に、コンソールプロンプトの使用を検討してください。多くの場合、単純な「y / n?」で逃げることができます。プロンプト。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経由を含む)で機能します。
readやZenityが提供するものよりも複雑なものが必要な場合は、「C ++への変更」が本当に最良の方法です(ただし、このようなシェルスクリプト置換タスクにはC++ではなくPython/ Rubyをお勧めします)
奇妙なゲームのためにシンプルなインターフェースを作りたいと思っています。健康のためのプログレスバーか何かが私が望むものの例です。変数「HEALTH」は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 ++などで「適切な」スクリプトとしてゲームを作成することを検討してください。これは、シェルの限界を押し広げているように聞こえます。 -スクリプトで実行できます。