アフィリエイト広告を利用しています

2017年05月31日

UNIX: スクリプトを改良する ── getopt

以前書いた, 名前で指定したアプリケーションを停止する スクリプト にオプションを追加した.
使っていて, アプリケーションが存在するかしないかを調べるオプションが欲しかったので書き直したのだ.
"-s" がそのためのオプションである.

使用方法は

mykill [ -s ] <application-name>

となる. たとえばメモアプリ (アプリケーション名は Notes) に対して "-s" オプションを使うと

$ mykill -s notes
1084 /Applications/Notes.app/Contents/MacOS/Notes

と表示されて終わる.
オプション無しでアプリケーション名のみを指定するとそのアプリケーションを停止する.

$ mykill notes
Terminated: 15
$ mykill -s notes # Check if the specified application was killed or not.

ところで今回, manpage の getopt(1) を読んで初めて知ったのだが /usr/local/share/getopt/ というディレクトリーがあって, ここに getopt の bash と tcsh のサンプルが置いてある.
手元の Mac にも入っていた. MacPorts でインストールされていたのだ.
役に立った.

オプションの解析は適当で完全ではない. しかしとりあえず iPhone の iTerminal アプリから使ってみてどうするか考える.

2018 年 4 月 19 日: 修正
たまたま見直してみたらスクリプトのコードが古いものだった. getopt(1) を導入する前のものになっていたのだ.
getopt(1) を使ったスクリプトのコードに入れ換えた.

#!/bin/sh

usage="usage: `basename $0` [ -s ] "
cmd=`basename $0`
proc=""

args=`getopt s: $*`

eval set -- "$args"

while true; do
case $1 in
-s)
proc="$2"
shift 2
ps -e | grep -i $proc | grep -v grep | grep -v $cmd |
awk '{ printf("%s\t%s\n", $1, $4); }'
exit $?
;;
--)
shift
break
;;
*)
echo $usage
exit 1
;;
esac
done

proc="$1"
kill `ps -e | grep -i $proc | grep -v grep | awk '{ print $1 }'`

exit $?
この記事へのコメント
コメントを書く

お名前:

メールアドレス:


ホームページアドレス:

コメント:

この記事へのトラックバックURL
https://fanblogs.jp/tb/6322086

この記事へのトラックバック
ファン
検索
<< 2024年04月 >>
  1 2 3 4 5 6
7 8 9 10 11 12 13
14 15 16 17 18 19 20
21 22 23 24 25 26 27
28 29 30        
最新記事
最新コメント
眼科の定期検査 〜 散歩 by コトタマ (02/15)
眼科の定期検査 by 三文字寄れば文殊のヒフミヨ (09/21)
本を読んで過ごす by 底彦 (12/13)
本を読んで過ごす by ねこ (12/12)
数学の計算をする by 底彦 (12/04)
タグクラウド
カテゴリアーカイブ
仕事(59)
社会復帰(22)
(40)
コンピューター(197)
(1)
借金(8)
勉強(7)
(12)
数学(97)
運動(8)
日常生活(1316)
(198)
健康(33)
読書(19)
プロフィール

ブログランキング・にほんブログ村へ
にほんブログ村
にほんブログ村 メンタルヘルスブログ うつ病(鬱病)へ
にほんブログ村
にほんブログ村 科学ブログ 数学へ
にほんブログ村
にほんブログ村 IT技術ブログ プログラム・プログラマーへ
にほんブログ村