# bashの特殊変数もの

# 文字列変換系

記法 意味
${AAA:-デフォルト値} からの場合にデフォルト値を返す
${AAA:=デフォルト値} カラの場合にデフォルト値を代入
${AAA:+マスキング} カラでない場合に変更後の値を返す
${AAA%/*} 後方を置換 ( ➙ dirname $AAA )
${AAA##/} 前方を置換 ( ➙ basename $AAA )
LENGTH=${#AAA} 文字列長
  • 覚えられないし、急に出てきたときも読めなさそうなので、基本使わない方針にしようかな。。
  • %, # の1個は最短マッチ、2個は最長マッチ

# 引数まとめて

記法 意味
"$@" "" で囲った単位で引数を取得
$@ 引数のスペース区切り ("" を無視)
$* 引数のスペース区切り ("" を無視)
  • 意図通りは "$@" だろうなと思う

# exit コード

記法 意味
$? 終了コード (正常 = 0)
$PIPESTATUS 各パイプの終了コード (配列)

# 自身のファイル名

記法 意味
$0 コマンドラインから呼び出したファイル名
$BASH_SOURCE ソースファイル名
  • zsh だと $0$BASH_SOURCE 相当になるらしい
呼び出し方 $0 $BASH_SOURCE
コマンドラインから ./親.sh ./親.sh ./親.sh
./親.sh から . 子.sh ./親.sh 子.sh
./親.sh から ./子.sh ./子.sh ./子.sh

[ 📩 ご意見 ]