シェルスクリプトに最適な「ガワ」を求めて

2011-03-10 19:58:00
  • このエントリーをはてなブックマークに追加

 ワケあって、シェルスクリプトに使う「ガワ」の情報を整理している。利用環境はSnow Leopard限定、しかもUNIXの流儀に不慣れな層に配慮せねばならず、どうしたものかと。簡潔かつ実用的に、しかも扱いやすい形を模索しているのだ。

 オーソドックスな形は、やはり「ダブルクリックに対応させる」ことだろう。実行属性(chmod + x ~)を与えたうえで、拡張子を一般的な「.sh」とせずTerminalに関連付けられた「.command」にしておけば、ダブルクリックでTerminalの起動からシェルスクリプトの実行までを処理するファイルとなる。特別な準備が必要ないことが利点だが、見栄えせず目立たないことは欠点といえるかもしれない。

 Automatorという手もある。シェルスクリプトインタープリタとして機能する「シェルスクリプトを実行」アクションを利用すれば、他のアクションからファイルなどを引数として受け取ることはもちろん、はい/いいえなどのボタンを備えたGUIダイアログに仕立てることもできる。保存時のフォーマットを「アプリケーション」にすれば、拡張子が「.app」の独立動作可能なアプリケーションにすることも可能だ。

 個人的な好みをいえば、GNOMEの「zenity」やKDEの「kdialog」のような、CUIのみで解決する形の実装が好みなのだが、Mac OS XのAqua環境向けには適当なツールが……あるのだ。

 それが「CocoaDialog」。バンドル内部のバイナリにオプションや引数を与える形で利用するため、いってみれば「シェルスクリプトのGUI拡張」だが、オプションひとつでOK/キャンセルのボタンを配置できるし、各ボタンをクリックしたときに値を返すこともできる。CocoaDialogのインストールが必要になるため、配布には適していないが、自分なりにシェルスクリプトを活用したいというユーザーにはちょうどいいはず。ウェブサイトにはドキュメントも充実しているので、いちどお試しあれ。

#!/bin/bash

CD="/Applications/CocoaDialog.app/Contents/MacOS/CocoaDialog"

rv=`$CD ok-msgbox --text "こんな感じで表示されます。" \
    --informative-text "注意喚起するにはちょうどいいでしょ?" \
--no-newline --float`
if [ "$rv" == "1" ]; then
    echo "OKだってばよ!"
elif [ "$rv" == "2" ]; then
    echo "キャンセルだってばよ!"
    exit
fi
シェルスクリプトに「CocoaDialog」でGUIを与えてみた シェルスクリプトに「CocoaDialog」でGUIを与えてみた
  • 新着記事
  • 特集
  • ブログ