シェルのtestコマンド
シェルのtestコマンドの理解が怪しかったので、使い方をメモしておく。
#!bin/sh # $?==0 で正常終了 # 数値の比較 ## 1 == 1 test 1 -eq 1; echo $? ## 1 != 2 test 1 -ne 2; echo $? ## 1 < 2 test 1 -lt 2; echo $? ## 2 > 1 test 2 -gt 1; echo $? ## 1 <= 1 test 1 -le 1; echo $? ## 1 >= 1 test 1 -ge 1; echo $? # 文字列の比較 ## "abc" == "abc" test "abc" = "abc"; echo $? ## "abc" != "aaa" test "abc" != "aaa"; echo $? # 空チェック ## 変数に値が入っているか test -n HOGE; echo $? ## 変数が空か test -z HOGE; echo $? # ファイルチェック ## file2が新しいか touch file1 touch file2 test ./file1 -ot ./file2 ## fileが存在するか touch file3 test -f ./file3; echo $? ## fileが存在しない test ! -f ./file4; echo $? ## ディレクトリが存在するか mkdir dir1 test -d ./dir1; echo $? # 略式 [ ] # [ は testコマンド # ] は [を使うためのオプション [ 1 -lt 2 ]; echo $? # AND条件 OR条件 [ 1 -eq 1 ] && [ 1 -lt 2 ] || [ 2 -eq 2 ]; echo $? # if文 ## 一般的な書き方 if [ 1 -eq 1 ] && [ 1 -lt 2 ] || [ 2 -eq 2 ]; then echo "if文の中の実行" fi ## これでもOK if [ 1 -eq 1 ] && [ 1 -lt 2 ] || [ 2 -eq 2 ] then echo "if文の中の実行" fi