if文 条件分岐 zsh

コマンドの説明

if文で条件分岐を記述します。

使い方

if文は下記のように記述します。

例1)基本

if [[ <条件文1> ]] then
    <式1>
elif [[ <条件文2> ]] then
    <式2>
else
    <式3>
fi

例2)条件式の書き方

a="hoge"
b="fuga"
if [[ $a == "hoge" ]] then
    echo "true"
fi
if [[ ! $a == "fuga" ]] then
    echo "false"
fi
if [[ $a == "hoge" && $b == "fuga" ]] then
    echo "&&"
fi
if [[ $a == "hoge" || $b == "fuga" ]] then
    echo "||"
fi

オプション

オプションは下記のように記述します。

if [[ <option> <引数> ]] then

例)if [[ -a “hoge.txt” ]] then

ファイル操作

-a, -e “ファイルA”
パスが存在する

-d “ファイルA”
ディレクトリが存在する

-f “ファイルA”
ファイルが存在する

-h, -L “ファイルA”
シンボリックリンクが存在する

-r “ファイルA”
リード権限がある

-w “ファイルA”
ライト権限がある

-x “ファイルA”
実行権限がある

-s “ファイルA”
中身が空でないファイル

“ファイルA” -ot “ファイルB”
ファイルAよりファイルBが新しい

“ファイルA” -nt “ファイルB”
ファイルBよりファイルAが新しい

“ファイルA” -ef “ファイルB”
ファイルAとファイルBが同じ

文字列操作

“文字列A” == “文字列B”
文字列Aと文字列Bが等しい

“文字列A” != “文字列B”
文字列Aと文字列Bが異なる

“文字列A” =~ “正規表現”
正規表現

“文字列A” < “文字列B”
ASCIIコードで文字列Aより文字列Bが大きい数字

“文字列A” > “文字列B”
ASCIIコードで文字列Bより文字列Aが大きい数字

-z “文字列A”
文字列Aが空

-n “文字列A”
文字列Aが空でない

数式操作

<数1> -eq <数2>
<数1>と<数2>が等しい

<数1> -lt <数2>
<数1>より<数2>が大きい

<数1> -le <数2>
<数1>より<数2>が大きいか等しい

<数1> -gt <数2>
<数1>より<数2>が小さい

<数1> -ge <数2>
<数1>より<数2>が小さいか等しい

その他

-v <変数>
<変数>が定義されていない

サンプル

ファイル操作

if [[ -a "./file" ]] then
    echo "a"
fi
if [[ -e "./file" ]] then
    echo "e"
fi
if [[ -d "./dir" ]] then
    echo "d"
fi
if [[ -f "./file" ]] then
    echo "f"
fi
if [[ -h "./link" ]] then
    echo "h"
fi
if [[ -L "./link" ]] then
    echo "L"
fi
if [[ -r "./unread" ]] then
    :
else
    echo "r"
fi
if [[ -s "./hoge.txt" ]] then
    echo "s"
fi
if [[ -w "./unwrite" ]] then
    :
else
    echo "w"
fi
if [[ -x "./unexe" ]] then
    :
else
    echo "x"
fi
if [[ "./older" -ot "./newer" ]] then
    echo "ot"
fi
if [[ "./older" -nt "./newer" ]] then
    :
else
    echo "nt"
fi
if [[ "./hoge.txt" -ef "./hoge.txt" ]] then
    echo "ef"
fi

文字列操作

a="hoge"
b=""
if [[ $a == "hoge" ]] then
    echo "=="
fi
if [[ $a != "hoge" ]] then
    :
else
    echo "!="
fi
if [[ $a =~ ".*ge" ]] then
    echo "=~"
fi
if [[ "b" > "a" ]] then
    echo ">"
fi
if [[ "b" < "c" ]] then
    echo "<"
fi
if [[ -n $b ]] then
    :
else
    echo "n"
fi
if [[ -z $b ]] then
    echo "z"
fi

数式操作

a=10
if [[ $a -eq 10 ]] then
    echo "eq"
fi
if [[ 9 -lt 10 ]] then
    echo "lt"
fi
if [[ 10 -le 10 ]] then
    echo "le"
fi
if [[ 11 -gt 10 ]] then
    echo "gt"
fi
if [[ 10 -ge 10 ]] then
    echo "ge"
fi

その他

if [[ -v c ]] then
    :
else
    echo "v"
fi

まとめ

if文についてまとめました。

参考文献

ZSH - Documentation

コメント

タイトルとURLをコピーしました