1.06.2基礎
Bashスクリプト内でshow_statusという関数を定義する。
呼び出し時にprintfを実行する。
有効な定義はどれか。
× 不正解
Bashではfunction NAME { commands; }で関数を定義できる。閉じ波括弧の前にはコマンド終端が必要である。
詳細解説
正しい
function show_status { printf '%s\n' ready; }Bashのfunction予約語を使った有効な関数定義である。
function show_statusで関数名を宣言し、波括弧内を本体として登録する。呼び出すまでprintfは実行されない。
誤り
function show_status = printf '%s\n' ready関数本体を波括弧で囲まず、代入構文のように記述している。
Bashの関数定義では名前の後を=でつながない。本体を波括弧などの複合コマンドとして記述する必要がある。
誤り
show_status := { printf '%s\n' ready; }:=はBashの関数定義演算子ではない。
:=はBashで関数を定義する記号ではないため構文エラーになる。変数代入とも異なる。
誤り
def show_status: printf '%s\n' readyPython風の構文でBashには存在しない。
def NAME:はBashの文法にない。他言語の見た目を持つがBash関数として解析されない。
実際に確かめる
一時的な検証環境で実行できる例です。
bash --noprofile --norc -c "function show_status { printf '%s\\n' ready; }; show_status"期待される結果
ready理解のポイント
- function予約語
- 本体は波括弧
- 定義後は名前で呼ぶ
確認時の注意
- 確認環境: GNU Bash 5.2 / 一時シェル
- function予約語はBash拡張であり、移植可能なshではNAME()形式を使う。
基礎のおさらい
定義と呼び出し
定義時は本体を登録し、NAMEをコマンド位置で呼び出した時に本体を実行する。
終端記号
同じ行で閉じ波括弧を書く場合、本体末尾のコマンドを;または改行で終える。
問題IDKL-102-913
確認環境GNU Bash 5.2 / 一時シェル
最終技術確認2026-08-13
誤り・権利侵害を報告