シェルの引数あれこれ
シェルで引数を取得したい場合は
$1:1つ目の引数
という感じで取得できるが、
$0:実行時のコマンド名 $#:引数の数 $@:実行時に指定された全パラメーター
というような指定も可能。
というのは割と常識なんだけど、
$BASH_SOURCE:実行時のコマンド名
という方法で$0
と同等のことをすることができる。
ただ厄介なのが、shellの実行方式や実行するshellによって結果が変わる。
具体的には
source ./shell_name
とすると$0
には-bash
が
zsh test
とすると$BASH_SOURCE
には空文字
が入ってくる
結論どうするのが良いかというと$0
を使いたいときは
${BASH_SOURCE:-$0}
とするか
if [[ "${BASH_SOURCE[0]}" == "${0}" ]]; then <処理> fi
とするのがよい