いろんなサイトのコピペ。 印刷して壁に貼っとく用。あとでどんどん追記する。
数値系 | 真の条件 | 備考 |
---|---|---|
"$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の方が小さい