やってみる

アウトプットすべく己を導くためのブログ。その試行錯誤すらたれ流す。

bashの特殊パラメータ

 $0とか。

成果物

特殊パラメータ

表記 意味
$n 指定した位置パラメータ。nは1から始まる数。
$@ (1 から始まる) 全ての位置パラメータ。ダブルクォート内で展開されると別々の単語に展開される("$@""$1" "$2" ...と同じ)
$# 位置パラメータの個数。
$? 最後に実行されたフォアグラウンドのパイプラインの 終了ステータス。
$- 現在のオプションフラグ。
$$ シェルのプロセス ID。
$! 最後に実行されたバックグラウンド (非同期) コマンドの プロセス ID。
$0 シェルまたはシェルスクリプトの名前。
$_ シェルの起動時: 実行するシェルまたはシェルスクリプト絶対パス
以降: 直前のコマンドに対する最後の引数。

 特殊パラメータは参照のみ可で代入不可。

Here() { echo "$0"; }
Filename() { echo "$(basename "$0")"; }
DirPath() { echo $(cd $(dirname "$0"); pwd); }
FullPath() { echo "$(cd $(dirname "$0"); pwd)/$(Filename)"; }
ShowParams() {
    echo "ParamNum: $#"
    echo "Params: '$*'"
    local count=1
    for p in $@; do echo "$count: $p"; ((count++)); done;
}
Result() {
    [[ 1 -eq 1 ]] && echo "True: $?" || echo "False: $?"
    [[ 1 -ne 1 ]] && echo "True: $?" || echo "False: $?"
}
Run() {
    echo "$_"
    # bash実行時のフラグ
    echo "$-"
    echo "$BASHPID"
    # シェルのPID
    echo "$$"
    # 直前に実行したバックグラウンドコマンドのPID
    echo "$!"
    Here
    Filename
    DirPath
    FullPath
    ShowParams A B C
    Result
    echo "$_"
}
Run
/tmp/work/repos/Shell.Study.20190406091150/src/05_special_parameter.sh
hB
9892
9892

/tmp/work/repos/Shell.Study.20190406091150/src/05_special_parameter.sh
05_special_parameter.sh
/tmp/work/repos/Shell.Study.20190406091150/src
/tmp/work/repos/Shell.Study.20190406091150/src/05_special_parameter.sh
ParamNum: 3
Params: 'A B C'
1: A
2: B
3: C
True: 0
False: 1
Result

対象環境

  • Raspbierry pi 3 Model B+
  • Raspbian stretch 9.0 2018-11-13
  • bash 4.4.12
$ uname -a
Linux raspberrypi 4.14.98-v7+ #1200 SMP Tue Feb 12 20:27:48 GMT 2019 armv7l GNU/Linux