お知らせ
現在サイトのリニューアル作業中のため、表示が崩れているページが存在することがあります。
ifの書き方メモ。中身はtestコマンドなので[[]]の中はtestと同じ書き方が可能。コマンドなので演算子の間とかはスペースが無いとうまく動かない。余談だがzshでwhichすると組み込みコマンドであることが確認できる
which [[
zsh: bad pattern: [[
which [
[: shell built-in command
which test
test: shell built-in command
あくまでコマンドなので演算子の間には半角スペースが必要。[より[[の方が高機能らしい
https://fumiyas.github.io/2013/12/15/test.sh-advent-calendar.html
https://yukidarake.hateblo.jp/entry/2015/12/14/205610
if [[ $var = "条件" ]]; then
    # 処理
elif [[ $var -eq 0 ]]; then
    # 処理
else
    # 処理
fi
[[]]を&&か||で区切れば成立する。これらは演算をしているわけではなく[[の終了コードを見て次のコマンドを実行するかどうかを判断しているだけ
if [[ $var1 = "条件1" ]] && [[ $var2 = "条件2" ]]; then
    # 処理
fi
if [[ $var1 = "条件1" ]] || [[ $var2 = "条件2" ]];
    # 処理
fi
testコマンドは条件を満たせば0、満たさなければ1を終了コードに設定するため、単純にこれを利用している。[[で代替可能なため基本的にtestは使わない方がいい
# 条件1の$?が0なら条件2が走る
[[ $var1 = "条件1" ]] && [[ $var2 = "条件2" ]]
# 条件1の$?を無視して条件2が走る
[[ $var1 = "条件1" ]] || [[ test $var2 = "条件2" ]]
| オプション | 意味 | 補足 | 
|---|---|---|
| string = string | 等しい | - | 
| string != string | 等しくない | - | 
| string =~ string | 正規表現一致 | - | 
| -n string | 空文字でない | non-zero | 
| -z string | 空文字 | zero | 
| -d path | ディレクトリ | directory | 
| -s path | ファイルサイズが 0 を超える | size | 
| オプション | 意味 | 補足 | 
|---|---|---|
| 0 -eq 0 | 等しい | equals | 
| 0 -ne 0 | 等しくない | not equals | 
| 0 -lt 0 | 未満 | less than | 
| 0 -le 0 | 以下 | less than or equal to | 
| 0 -gt 0 | 超える | greater than | 
| 0 -ge 0 | 以上 | greater than or equal to | 
| オプション | 意味 | 補足 | 
|---|---|---|
| -d path | ディレクトリ | directory | 
| -e path | 存在するパス | exists | 
| -f path | ファイル | file |