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?

Bash で function 定義

Last updated at Posted at 2024-07-15

Bash スクリプトで関数( function ) を定義する方法についてメモ。
Bash における関数の基本的な定義方法と、関数間で引数を伝搬させる方法について書いていく。

Bashにおける関数の記述方法

Bashにおいて関数を定義するには、主に2つの方法がある。
1つはfunctionキーワードを使用する方法、もう1つはキーワードを使用せずに関数名の後に()を付ける方法。

関数の定義方法

function キーワードを使用する方法

function my_function1() {
    echo "This is a function1"
}

function キーワードを使用しない方法

my_function2() {
    echo "This is a function2"
}

function キーワードは任意のため、どちらも同じように機能する。

関数の呼び出し方法

定義された関数を呼び出すには、関数名をそのままコマンドのように使用する。

例:

my_function  # my_functionを呼び出す

引数を関数に渡す場合は、関数名の後にスペースを空けて引数を記述する。

my_function "arg1" "arg2"  # 2つの引数を持つmy_functionを呼び出す

実際にやってみる

func_test.sh を作成して実行してみる。

# func_test.sh の中身確認
$ cat func_test.sh
#! /bin/bash

function my_function1 {
    echo "This is a function1"
}

my_function2() {
    echo "This is a function2"
}

my_function1
my_function2

# func_test.sh 実行
$ bash func_test.sh
This is a function1
This is a function2

Bashスクリプトファイル内の関数をターミナルで使用する

Bash スクリプトファイルで定義した関数をターミナルのコマンドとして使いたい場合、関数を含むスクリプトファイルをソース化してしまうのが早い。
そのためには source コマンドまたは .(ドット)コマンドを使用する(source .bashrc とかやったことがある人も多いと思う)。
例として、上記の func_test.sh をソース化してみる。

$ source func_test.sh
# または
$ . func_test.sh

# コマンドとして実行
$ my_function1
This is a function1

おまけ: 関数間で引数を伝搬させる

以下では、2つの引数を first_function から second_function に伝搬させるコード (function2function_test.sh)

#!/bin/bash

# 最初の関数を定義
function first_function {
    msg1=$1  # 最初の引数
    msg2=$2  # 二番目の引数
    echo "First function: ${msg1}, ${msg2}"
    # 第二の関数に引数を伝搬
    second_function "${msg1}" "${msg2}"
}

# 第二の関数を定義
function second_function {
    msg1=$1  # 最初の引数
    msg2=$2  # 二番目の引数
    echo "Second function: ${msg1}, ${msg2}"
}

# 最初の関数を引数とともに実行
first_function "Hello" "Bash"

実行してみる

$ bash function2function_test.sh
First function: Hello, Bash
Second function: Hello, Bash

めでたし!

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?