Bashの関数 - 定義、引数、戻り値、スコープ

引数、戻り値、ローカル変数、エラーハンドリング、モジュール式シェルスクリプトのための実践パターンを使った再利用可能なbash関数の書き方を学びます。

Control Flow

詳細な説明

Bashの関数

関数は再利用可能なコードブロックをカプセル化します。引数を受け取り、値を返し、適切なスコーピングのためにローカル変数をサポートします。

関数定義

greet() {
  echo "Hello, $1!"
}
greet "Alice"    # Hello, Alice!

戻り値

is_installed() {
  command -v "$1" > /dev/null 2>&1
}

if is_installed "docker"; then
  echo "Dockerが利用可能です"
fi

get_timestamp() {
  date +%s
}
TIMESTAMP=$(get_timestamp)

ローカル変数

process_file() {
  local filename="$1"
  local line_count=0
  while IFS= read -r line; do
    line_count=$((line_count + 1))
  done < "$filename"
  echo "$line_count"
}

実践パターン

log() {
  local level="$1"
  shift
  echo "[$(date '+%Y-%m-%d %H:%M:%S')] [$level] $*" | tee -a app.log
}

cleanup() {
  echo "一時ファイルをクリーンアップ中..."
  rm -rf "$TEMP_DIR"
}
trap cleanup EXIT

ユースケース

関数は整理されたbashスクリプトの構成要素です。ログユーティリティ、入力検証、エラーハンドリングラッパー、デプロイステップ、設定の読み込み、繰り返し操作に使用されます。関数を使用するとスクリプトが読みやすく、テストしやすく、保守しやすくなります。

試してみる — Bash Cheat Sheet

フルツールを開く