一つのシェルスクリプトファイルで複数のコマンドを作成する方法を以下に記します。
実現方法は、basenameコマンドとシンボリックリンクを使用して実現します。
以下に1つのシェルスクリプトで複数コマンドを作成し実行してみます。
以下に1つのシェルスクリプトで複数のコマンドを実現するシェルスクリプトと手順および実行結果を記します。
以下の記すように、シェルスクリプト内に複数のfunctionを作成します。
#!/bin/bash
#------------------------------
# hello
#------------------------------
function hello {
echo "hello"
}
#------------------------------
# konnichiwa
#------------------------------
function konnichiwa {
echo "konnichiwa"
}
#------------------------------
# bye
#------------------------------
function bye {
echo "bye"
}
#------------------------------
# sayonara
#------------------------------
function sayonara {
echo "sayonara"
}
cmd=$(basename $0)
case $cmd in
"hello")
hello;;
"konnichiwa")
konnichiwa;;
"bye")
bye;;
"sayonara")
sayonara;;
*)
exit 0
esac
上記のfuncs.shに実行権限を与え、function名でシンボリックリンクを張ります。
sakura@ubuntu:~$ ls -l 合計 4 -rwxrwxr-x 1 sakura sakura 613 9月 10 23:32 funcs.sh
chmod +x funcs.sh
ln -s funcs.sh konnichiwa ln -s funcs.sh bye ln -s funcs.sh sayonara
sakura@ubuntu:~$ ls -l 合計 4 lrwxrwxrwx 1 sakura sakura 8 9月 10 23:41 bye -> funcs.sh -rwxrwxr-x 1 sakura sakura 613 9月 10 23:32 funcs.sh lrwxrwxrwx 1 sakura sakura 8 9月 10 23:41 hello -> funcs.sh lrwxrwxrwx 1 sakura sakura 8 9月 10 23:41 konnichiwa -> funcs.sh lrwxrwxrwx 1 sakura sakura 8 9月 10 23:41 sayonara -> funcs.sh
sakura@ubuntu:~$ ./hello hello sakura@ubuntu:~$ ./konnichiwa konnichiwa sakura@ubuntu:~$ ./bye bye sakura@ubuntu:~$ ./sayonara sayonara
コマンド名=functionで動作していることが確認できました。
仕組みは簡単で、$0はファイル名になります。
basenameでディレクトリを除き、ファイル名だけにします。
ファイル名=functionになるようになっているので、
シンボリックリンクされたファイル名=functionとなり動作します。
以上、一つのシェルスクリプトのファイルで複数のコマンドを実現する実装方法でした。