0Pricing
Linux Server Deployment & SSH Mastery · レッスン

関数、引数、再利用可能なスクリプト

Bashスクリプトをモジュール化して保守しやすくします。関数を定義し、コマンドライン引数を渡して検証し、戻り値を扱い、多様なサーバー自動化タスクで再利用できるスクリプトを構成します。

「関数、引数、再利用可能なスクリプト」はCoddyKit上の無料Linux Server Deployment & SSH Masteryレッスンです。 これはレッスン4/4です。 下記で完全なレッスンを無料で読むことができます。その後、ブラウザ内の組み込みコードエディタと24時間対応のAIチューターでハンズオン演習できます。 これはLinux Server Deployment & SSH Mastery学習パスの一部であり、ウェブとCoddyKitアプリ全体で進捗が同期されます。 Linux Server Deployment & SSH Masteryコースには全4レッスンが含まれています。

スクリプトからツールへ

スクリプトを作成し、タスクを自動化し、エラーにも対処できるようになりました。次のステップは、スクリプトを再利用可能にすることです。つまり、引数を受け取る関数としてコードを整理し、1つのスクリプトをさまざまな状況で使えるようにします。

これにより、一時的なスクリプトが本格的な管理ツールになります。

関数の定義

Bashの関数は、コマンドを1つの名前の下にまとめます。一度定義すれば、何度でも呼び出せます。本体は中かっこの間に記述します。

greet() {
  echo 'Hello from the function!'
}

greet

関数への引数の渡し方

関数は引数を位置によって受け取ります。$1、$2などが該当します。$@はすべての引数、$#は引数の個数を表します。

greet() {
  echo "Hello, $1! You are $2 years old."
}

greet Alice 30

スクリプトレベルの引数

同じ位置パラメーターは、スクリプト全体でも使用できます。./deploy.sh staging v2を実行すると、スクリプトは$1を「staging」、$2を「v2」として読み取ります。

#!/bin/bash
ENV=$1
VERSION=$2
echo "Deploying $VERSION to $ENV"

引数の検証

堅牢なツールは入力を検証します。想定した引数の個数を確認し、不足している場合は使用方法を示すメッセージを表示して終了します。

if [ $# -lt 2 ]; then
  echo "Usage: $0 <env> <version>"
  exit 1
fi

関数からのステータスの返却

関数はreturnを使って終了ステータスを返します(0 = 成功)。呼び出し元では、$?を使うか、ifの中で直接確認します。

is_root() {
  [ "$(id -u)" -eq 0 ]
}

if is_root; then echo 'root'; else echo 'not root'; fi

関数からのデータの返却

ステータスだけでなく実際のデータを返すには、echoで出力し、コマンド置換で取得します。呼び出し元では、その出力を変数に代入します。

timestamp() {
  date +%Y%m%d_%H%M%S
}

NOW=$(timestamp)
echo "Backup name: backup_$NOW"

ローカル変数

Bashの変数はデフォルトでグローバルになるため、関数間でバグが発生する原因になります。関数内だけで使う変数はlocalで宣言し、他の関数から分離します。

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

echo "Sum: $(add 3 4)"

デフォルト値と名前付きフラグ

パラメーター展開で適切なデフォルト値を指定し、使いやすいツールになるようフラグを解析します。

  • ${1:-default} — $1が未設定の場合に「default」を使用する
  • getopts — -vや-f file形式のフラグを解析する
ENV=${1:-staging}
echo "Target environment: $ENV"

関数ライブラリの読み込み

共通関数を専用ファイルにまとめ、複数のスクリプトからsourceで読み込みます。これにより、ヘルパーをあちこちにコピーして貼り付ける必要がなくなります。

# in lib.sh: define log(), is_root(), etc.
source ./lib.sh
log 'Starting deployment'

ベストプラクティス

保守しやすいスクリプトを作成するには、次の点に注意します。

  • 処理を小さな名前付き関数に分割する
  • 常に引数を検証し、使用方法を表示する
  • 関数内の変数にはlocalを使用する
  • sourceするライブラリファイルでヘルパーを共有する

クイックチェック

Bashの関数に関する知識をテストしましょう。

まとめ

これで、再利用可能なBashツールを作成できるようになりました。

  • 関数を定義し、繰り返し呼び出す
  • 引数($1、$@、$#)を渡して検証する
  • returnでステータスを返し、echoとコマンド置換でデータを返す
  • local変数とsourceした共有ライブラリを使用する

これらのパターンにより、一度限りのスクリプトを保守しやすい自動化ツールキットに変えられます。

よくある質問

「関数、引数、再利用可能なスクリプト」レッスンは無料ですか?

はい。「関数、引数、再利用可能なスクリプト」の完全なテキストはこのウェブで無料で読めます。インタラクティブに演習し(組み込みコードエディタと24時間対応のAIチューター)、Linux Server Deployment & SSH Masteryコースの残りをアンロックするには、CoddyKit PROにアップグレードしてください。 Linux Server Deployment & SSH Masteryコースには全4レッスンが含まれています。

「関数、引数、再利用可能なスクリプト」で何を学びますか?

Bashスクリプトをモジュール化して保守しやすくします。関数を定義し、コマンドライン引数を渡して検証し、戻り値を扱い、多様なサーバー自動化タスクで再利用できるスクリプトを構成します。 ブラウザで直接実行するハンズオンコードでLinux Server Deployment & SSH Masteryを演習し、24時間対応のAIチューターがレッスンを進める中での質問に答えます。

Linux Server Deployment & SSH Masteryを始めるのに経験は必要ですか?

事前経験は必要ありません。CoddyKitのLinux Server Deployment & SSH Masteryは初級者から上級者向けに構成されているため、ここから始めるか最初から始めて、自分のペースで進むことができます。 これはレッスン4/4です。

「関数、引数、再利用可能なスクリプト」レッスンにはどのくらい時間がかかりますか?

ほとんどのCoddyKitレッスンは約5~10分かかります。各レッスンはコンパクトでインタラクティブなので、着実に進歩し、ウェブとアプリ全体で正確に前回の場所から再開できます。

このLinux Server Deployment & SSH Masteryレッスンでコードを書いて実行できますか?

はい。すべてのLinux Server Deployment & SSH Masteryレッスンに組み込みコードエディタが含まれているため、ブラウザでリアルコードを書いて実行し、即座のAIフィードバックを取得できます。ローカル設定は不要です。

このコースのすべてのレッスン

  1. Bashスクリプティング入門
  2. サーバータスクの自動化
  3. スクリプトのエラー処理とログ出力
  4. 関数、引数、再利用可能なスクリプト
← Linux Server Deployment & SSH Masteryに戻る