このエントリーをはてなブックマークに追加


一つのシェルスクリプトで複数のコマンドを作成する方法

一つのシェルスクリプトファイルで複数のコマンドを作成する方法を以下に記します。
実現方法は、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

シンボリックリンクをfunction名で張る

上記のfuncs.shに実行権限を与え、function名でシンボリックリンクを張ります。

  1. funcs.shファイルが存在するか確認しましmた。
    sakura@ubuntu:~$ ls -l
    合計 4
    -rwxrwxr-x 1 sakura sakura 613  9月 10 23:32 funcs.sh
     
  2. chmodコマンドでfuncs.shに実行権限を与えます。
    chmod +x funcs.sh
     
  3. シンボリックリンクをfunction名で張ります ln -s funcs.sh hello
    ln -s funcs.sh konnichiwa
    ln -s funcs.sh bye
    ln -s funcs.sh sayonara
     
  4. 以下のようになります。
    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となり動作します。

以上、一つのシェルスクリプトのファイルで複数のコマンドを実現する実装方法でした。


スポンサーリンク


添付ファイル: filefuncs.zip 67件 [詳細]

トップ   編集 凍結 差分 バックアップ 添付 複製 名前変更 リロード   新規 一覧 単語検索 最終更新   ヘルプ   最終更新のRSS
Last-modified: 2015-03-20 (金) 22:26:58 (1306d)