シェルスクリプトのif文とコマンドの終了ステータス
はじめに
新しいLinuxの教科書を読んだので備忘録
シェルスクリプトのif文の基本と終了ステータスについて
シェルスクリプトのif
基本の書き方
if <コマンド1>; then <コマンド1>の結果が真の場合の処理 elif <コマンド2>; then <コマンド2>の結果が真の場合の処理 elif <コマンド3>; then <コマンド3>の結果が真の場合の処理 else 上記の結果がすべて偽である場合の処理 fi
sample-if.sh
#!/bin/bash if [ "$1" = "bin" ]; then echo "OK" else echo "NG" fi
上記を実行
$ ./sample-if.sh bin OK $ ./sample-if.sh hello NG
ifにはコマンドを指定する。
ちなみに上記sampleのifの [
と ]
もコマンドなので、直前直後にスペースを開けないとエラーになる。
ifで指定したコマンドが真か偽かはコマンドの終了ステータスで判断する
コマンドの終了ステータスが 0
の場合は真、 0
以外の場合は偽と判定される。
コマンドの終了ステータス
lsやgrepなどのコマンドはすべて終了時に終了ステータスと呼ばれる整数値を返す。
- コマンドが正常に終了した場合は
0
を返す。 - エラー時には0以外の値を返す。
終了ステータスがどのような値を取るかはコマンドによって違いがある。
ちなみに $?
というシェル変数で前回のコマンドの終了ステータスを参照できる
$ ls parameters.sh sample-if.sh $ echo $? 0