関数、引数、再利用可能なスクリプト
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フィードバックを取得できます。ローカル設定は不要です。
このコースのすべてのレッスン
- Bashスクリプティング入門
- サーバータスクの自動化
- スクリプトのエラー処理とログ出力
- 関数、引数、再利用可能なスクリプト