0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 3 years have passed since last update.

スクリプトファイル内の任意の関数を呼び出す方法

Posted at

概要

数多くの関数が入ったスクリプトファイルにおいて **スクリプトファイルを編集せず**に特定の関数を呼び出す方法

スクリプトファイルの関数

例 以下の内容のA.shというスクリプトファイルがあるとすると
A.sh
funcA(){
   echo "funcAを呼び出しました"
}

funcB(){
   echo "funcBを呼び出しました"
}

ターミナル等で以下のコードで実行すると、関数は定義されただけなので何も起こりません

$bash A.sh 

実行したい関数名を改めてスクリプトファイル内に書く必要があります

A.sh
funcA(){
   echo "funcAを呼び出しました"
}

funcB(){
   echo "funcBを呼び出しました"
}
funcA
funcB

このように編集すると2つの関数が呼び出され、二文が表示されます

スクリプトファイルを書き換えるのが面倒!

これで関数は扱えるようになりましたが、毎回実行したい関数を書き換えるのは面倒です それを解決するのが今回の方法です

対処法

スクリプトファイルに引数を取らせて、その値に応じて呼び出す関数を変える処理を追加することです
A.sh
funcA(){
   echo "funcAを呼び出しました"
}

funcB(){
   echo "funcBを呼び出しました"
}

##新しく追加する処理↓
#$1とは1つ目の引数という意味です
if [ $1 = "a" ]
then
    funcA
elif [ $1 = "b" ]
then
    funcB
else
    echo "関数は呼び出されませんでした"
fi

新しいA.shにおいて、関数を呼び出したい場合に実行するコードは

$bash A.sh a
funcAを呼び出しました

$bash A.sh b
funcBを呼び出しました

このようになります

まとめ

数多くの関数が入ったスクリプトファイルにおいて
スクリプトファイルを編集せずに特定の関数を呼び出すには、、、

スクリプトファイルに引数を取らせて、その値に応じて呼び出す関数を変える処理を追加

0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?