いろんなサイトのコピペ。 印刷して壁に貼っとく用。あとでどんどん追記する。
| 数値系 | 真の条件 | 備考 |
|---|---|---|
| "$A" -eq "$B" | A==B | |
| "$A" -ne "$B" | A!=B | |
| "$A" -lt "$B" | A < B | 小なり |
| "$A" -le "$B" | A<=B | |
| "$A" -gt "$B" | A > B | 大なり |
| "$A" -ge "$B" | A>=B | |
| 文字列系 | 真の条件 | 備考 |
| "$A" = "abc" | 文字列が等しい | |
| "$A" != "abc" | 文字列が等しくない | |
| "$A" \< "abc" | $Aが辞書的に小さい | < はエスケープが必要 |
| "$A" \> "abc" | $Aが辞書的に大きい | > はエスケープが必要 |
| -z "$A" | 文字列長==0 | |
| -n "$A" | 文字列長>0 | |
| ファイル系 | 真の条件 | 備考 |
| -d hoge | hoge がディレクトリ | シンボリックリンクはリンク先に準ずる |
| -f hoge | hoge が普通のファイル | シンボリックリンクはリンク先に準ずる |
| -s hoge | hoge が1バイト以上 | ディレクトリは真扱い、ファイルが無いときは偽 |
| -e hoge | hoge がとにかくある | 切れたシンボリックリンクは偽 |
| -r hoge | hoge が読める | |
| -w hoge | hoge が書ける | |
| -x hoge | hoge が実行可能 | |
| -O hoge | hoge の所有者が自分 | |
| -G hoge | hoge のグループが自分と同じ | |
| hoge -nt piyo | hogeがpiyoより新しい | newer than |
| hoge -ot piyo | hogeがpiyoより古い | older than |
| ファイル系 (くっそマイナーな分) | 真の条件 | 備考 |
| -S hoge | hoge がソケット | |
| -p hoge | hoge が名前付きパイプ | |
| -L hoge | hoge がシンボリックリンク | リンク先が切れてても、あれば真 |
| -b hoge | hoge がブロックデバイス | |
| -c hoge | hoge がキャラクターデバイス | |
| -u hoge | hoge がsetUIDされてる | |
| -g hoge | hoge がsetGIDされてる | |
| -k hoge | hoge がスティッキービット立ってる | |
| -t "$fd" | fd がオープンされてる | fdは省略可能、デフォルトは 1(標準出力) 0が有効なら標準入力が存在する、というふうに使う |
| 論理系 | 真の条件 | 備考 |
| : | 真 | 無条件に真。whileとかでよく使う |
| ! -f hoge | 否定 | 頭にびっくりで否定 |
| コマンド | 戻り値が0 | exit 0 なら真になる |
| ! コマンド | 戻り値が0以外 | |
| "$A" = "$B" -a "$C" = "$D" | and条件 | |
| "$A" = "$B" -o "$C" = "$D" | or条件 | |
| -x "hoge" -o \( -f "piyo" -a -f "fuga" \) | かっこ | [ ]の中で使う。エスケープ必須 |
if [ -f "hoge.txt" ]; then echo ファイルあります fi [ -f "hoge.txt" ] && echo ファイルあります test -f "hoge.txt" && echo ファイルあります
if [ ! -f "hoge.txt" ]; then echo ファイルありません fi [ ! -f "hoge.txt" ] && echo ファイルありません [ -f "hoge.txt" ] || echo ファイルありません
[ の後ろのスペースを忘れないように
if [ -f "hoge.txt" -a -f "piyo.txt" ]; then echo ファイル両方あります fi if [ -f "hoge.txt" ] && [ -f "piyo.txt" ]; then echo ファイル両方あります fi
touch hoge.txt if [ $? -eq 0 ]; then echo タッチ成功 fi if touch hoge.txt; then echo タッチ成功 fi
[[ "abc" < "def" ]] && echo abcの方が小さい