シェルの引数あれこれ
シェルで引数を取得したい場合は
$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
とするのがよい
MySQLでauto incrementカラムに0を入力したくなってしまった場合
このコマンドを打てば0も入力できる。
ただし0を0として認識するようになる。
(デフォルトの挙動は0またはnullのときに自動採番)
set global sql_mode='NO_AUTO_VALUE_ON_ZERO';
何故かオペレーションで必要になった。