揮発性のメモ2

http://d.hatena.ne.jp/iww/

bashのif文

いろんなサイトのコピペ。 印刷して壁に貼っとく用。あとでどんどん追記する。

数値系 真の条件 備考
"$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の方が小さい