Bashプログラミング
 Computer >> コンピューター >  >> プログラミング >> Bashプログラミング

Bashで関数を作成して呼び出す方法【初心者向け完全ガイド】

この記事では、Bashで関数を作成し、呼び出す方法をわかりやすく解説します。

関数とは、特定の処理を実行するためにまとめられた、再利用可能なコードのブロックです。関数を使うことで、スクリプトのモジュール化が進み、コードの再利用性が大幅に向上します。

Bashにはechoreadといった組み込み関数が用意されていますが、独自の関数を定義することも可能です。

Bashで関数を作成する方法

Bashで関数を定義するには、主に2つの書き方があります。

1つ目は、関数名に続けて波括弧で処理を囲む方法です。

functionName(){
  // 関数の処理範囲
}

1行で書くコンパクトなバージョンは以下のとおりです。

functionName(){ echo "hello"; }

2つ目は、functionキーワードを使って宣言する方法です。

function functionName {
  // 関数の処理範囲
}

コンパクト版はこちらです。

function functionName { echo "hello"; }

functionキーワードを使う場合は、関数名の後ろに()を付ける必要がない点に注意してください。

Bash関数に関する重要なポイント

  • 波括弧 {} の中のコードが、関数の本体(スコープ)となります
  • 関数を呼び出すときは、スクリプト内のどこからでも関数名を書くだけで実行できます
  • 関数は、呼び出す前に必ず定義しておく必要があります
  • コンパクトな1行形式で書く場合、最後のコマンドにはセミコロン ; が必要です

関数定義の例

次のコードは、コンソールに「Hello World」と出力する関数です。関数名はprintHelloとしています。

#!/bin/bash

printHello(){
    echo "Hello World!"
}

Bashで関数を呼び出す方法

それでは、上記で定義した関数はどのように呼び出せばよいのでしょうか。実はとても簡単で、Bashスクリプト内に関数名をそのまま書くだけで呼び出せます。

例を見てみましょう。

#!/bin/bash

printHello(){
    echo "Hello World!"
}

# スクリプト内の任意の場所で、関数名を書くだけでprintHelloを呼び出せる

printHello

実行結果:

"Hello World"

引数を渡す方法

先ほどのprintHello()関数には引数がありません。呼び出すたびに必ず「Hello World」と表示されます。しかし、より汎用的な関数を作りたい場合もあるでしょう。たとえば、引数を渡すと、その内容を出力するような関数です。

引数を受け取る方法は2つあります。

まず1つ目は、printHello()関数を修正して、渡された引数を出力するようにする方法です。

例:

#!/bin/bash

printAny(){
    echo "Hello " $1
}

printAny World
printAny DevQa
printAny I love coding!

実行結果:

Hello World
Hello DevQA
Hello I

3つ目の出力printAny I love coding!では、「Hello, I」しか表示されていないことに注目してください。

これは、この関数が1つの引数$1しか受け取らない設計になっているためです。「I love coding!」は実際にはスペース区切りの3つの引数として扱われています。

すべてを1つの引数として渡したい場合は、テキストをダブルクォートで囲みます。

例:

#!/bin/bash

printAny(){
    echo "Hello " $1
}

printAny "I love coding!"

実行結果:

Hello I love coding

別の例として、数値を引数として渡すこともできます。

#!/bin/bash

add() {
    result=$(($1 + $2))
    echo "Result is: $result"
}

add 1 2

実行結果:

Result is: 3

戻り値を返す方法

Bashの関数は、値を返すこともできます。

例:

#!/bin/bash

add() {
    result=$(($1 + $2))
}

add 1 2
echo "The sum is: "$result

実行結果:

The sum is: 3

もう1つの方法は、関数の計算結果を変数に代入しておき、必要なときに利用するやり方です。この際、localキーワードを使って変数を関数内のローカル変数として定義すると、他の部分への影響を避けられます。

例:

#!/bin/bash

add () {
  local result=$(($1 + $2))
  echo "$result"
}

result="$(add 1 2)"
echo "The sum is: "$result

実行結果:

The sum is: 3

  1. VBAでカスタムExcel関数(ユーザー定義関数)を作成する方法

    Microsoft Excelには、日常業務の大部分をこなしてくれる多数の組み込み関数が標準で搭載されています。ほとんどの場合、これらの内蔵関数だけで十分ですが、既存のExcel関数では実現できない機能が必要になることもあるでしょう。 そんなときに役立つのが、VBAを使って作成できるカスタムExcel関数(ユーザー定義関数)です。自分が必要とする機能を持った関数を自由に作成でき、ワークシート上では通常のExcel関数と同じように「=」に関数名を続けて入力するだけで呼び出せます。この記事では、VBAを使ってカスタムExcel関数を作成する具体的な手順を解説します。 カスタムExcel関数を作成す

  2. Linuxでエイリアスとシェル関数を作成する方法【初心者向け完全ガイド】

    GNU/Linuxシステムを最大限に活用したいなら、コマンドプロンプトやシェルスクリプトの知識は今なお欠かせません。コマンドラインでの作業に慣れてくると、日々使っているコマンドの多くが、実際には利用可能なコマンド全体のごく一部であることに気づくはずです。ほとんどの作業は習慣的に行われており、同じコマンドを毎日同じように入力していることが多いのです。代表的なコマンドユーティリティの多くは、入力の手間を省くために短い名前を採用しています。たとえば「list」の代わりにls、「change-directory」の代わりにcdと入力します。それでもなお、Linuxユーザーは同じコマンドを何度も繰り返し