, , ( )
まれなスクリプトでは、ユーザーと通信する必要がありません。 私たちは、プログラム(ユーティリティ)が私たちが望むことをすることを期待しています。 したがって、それらに影響を与えるツールが必要であり、プログラム自体がその作業の進捗状況を説明する必要があります。
このトピックでは、bashスクリプトをユーザーと対話するいくつかの方法を検討します。 この記事は、スクリプト作成の初心者を対象としていますが、経験のある人が自分にとって興味深いものを見つけられることを願っています。
トピックには、セマンティックの負荷をかけない原始的な例も含まれていますが、作業中に興味深いものを見ることができます。
変数
初期データを保存する最も一般的な方法は、変数を使用することです。 プログラムの最初の段階で、ユーザーが初期データを書き込む変数をいくつか宣言します。
この方法は、データが少なく、ユーザーの介入なしにスクリプトが自動的に実行されるように設計されている場合に適しています。 何をどこに入力する必要があるかをユーザーに明確に知らせる必要があります。 これらすべてを1つの場所、つまり
構成ファイルに収集することをお勧めし
ます 。
sourceコマンドで接続できます。 たとえば、構成ファイルがスクリプトと同じディレクトリにある場合、次のようになります。
config.cfgファイルで、
EMAIL=example@gmail.com
の行を忘れずに入力してください
コマンドラインオプション
プログラムにデータを報告する別の方法は、起動時にコマンドラインで指定することです。 これらのパラメーターは、番号付きの変数に含まれています。 例:
$ 0-スクリプトの名前、
$ 1-最初のパラメーター、
$ 2-2番目のパラメーターなど。2つの補助変数もあります。
$#は渡された引数の数を含みます。
$ @には、スペースで区切られた、スクリプトに渡されるすべての引数が含まれます。

質問と確認

多くの人が上のスクリーンショットの質問に精通していると思います。 このようなダイアログは使用できます...まあ、あなたはそれがどこで使用できるかをあなた自身が推測しました。
スクリーンショットでは、文字「D」が大きいことに注意してください。 これはデフォルトのアクションを意味します。つまり、ユーザーが何も入力しない場合、これは「D」を入力するのと同じになります。
OK /失敗
プログラムがユーザーと通信する別の方法は、実行ステータスです。 おそらく彼らはあなたになじみがあるでしょう。

実装も非常に簡単です。
これは、スクリプトの仕組みです。

優れた人々は、ログの記録と進捗状況を含むスクリプトの拡張バージョンを作成しました。
リンクを喜んで共有します。
上記のリンクに基づいて、コードを簡素化できます。
シュードグラフィックス
グラフィカルな表現が好きな人には、便利なツール
dialogがあります。 デフォルトでは、システムにはないため、修正しましょう。
sudo apt-get install dialog
簡単なコマンドで試すことができます:
dialog --title " " --msgbox "\n - !" 6 50
進行状況ダイアログの例を次に示します。
青い背景を残さないように、clearを挿入して画面をクリアする
ことを忘れないでください。 このユーティリティは、さらに多くの種類のダイアログボックスをサポートしています。 主な欠点は、デフォルトではシステムにないことです。
ダイアログの代わりに
whiptailがあります。これはデフォルトで一部のシステムにも存在します。
詳細については、リンクを参照してください。
http://unstableme.blogspot.com/2009/12/linux-dialog-utility-short-tutorial.htmlhttp://www.cc-c.de/german/linux/linux-dialog.phpGUI
GUIには熱烈な反対者がいますが、明らかに存在する権利があります。 このようなダイアログは、
kdialogコマンド (KDEがグラフィカルシェルの場合)、または
gdialogと
zenity (Gnomeの場合)を使用して取得できます。
たとえば、パスワード入力フォーム:
kdialog --password ", :"
どちらか
gdialog --password ", :"
別の例は、KDEの例です。
kdialog --question " ?" rc=$? if [ "${rc}" == "0" ]; then echo " yes" else echo " no" fi
Gnomeの場合:
ご覧のとおり、この方法の明らかな欠点は、特定のデスクトップ環境への接続です。 確かにグラフィカル環境では、これは存在しないかもしれません。 しかし、それにもかかわらず、いつか便利になるかもしれません。
リンクの詳細:
http://pwet.fr/man/linux/commandes/kdialoghttp://linux.about.com/library/cmd/blcmdl1_gdialog.htmhttp://www.techrepublic.com/blog/opensource/gui-scripting-in-bash/1667PS継続するには...
UPD: 「OK / FAIL」セクションに簡略化されたコードを追加しました。
UPD2:構成ファイルを変数セクションに接続する例を追加しました。
2番目の部分は公開されています。