自分自身のファイル名に応じてスクリプトの動作を変える
よく似た動作のプログラムが複数必要な場合、1つのプログラムに
複数の名前のリンク作成し、呼び出された名前によってプログラムの
詳細な動作を変える方法をとることがある。
(例えばgnuzipはgzipへのリンクになっていることがある)
変数$0には実行中のスクリプトの名前がはいっているので
これを調べれば簡単に実現できる
#!/bin/sh #animal.sh #オプションが指定されていない場合、自分自身のスクリプト名から #拡張子(.sh)を除いたものをオプションとして利用する if [ -z "$1" ]; then opt=--`basename "$0" .sh` else opt="$1" fi case "$opt" in --dog) bow="Bowwow, bowwow";; --cat) bow="Meow, meow";; --cow) bow="Moo, moo";; --pig) bow="Oink, oink";; *) bow="!?x, !?x" esac echo $bow
$ ./animal.sh --dog Bowwow, bowwow $ ln -s animal.sh cat.sh $ ./cat.sh Meow, meow