Bus errorとSegmentation faultに困ったら見るブログ

物理の研究者による日々の研究生活のメモ書きです ( python/emacs/html/Japascript/シェルスクリプト/TeX/Mac/C言語/Linux/git/tmux/R/ポケモンGO)

【シェルコマンド】ディレクトリやファイルの存在確認によって処理を分岐させる

最近何かのことを調べていて以下のブログにたどり着いた
色々とページを見てたら、目からウロコが落ちた
■ 参考 : 最近覚えたシェルスクリプトの小ネタ


「testコマンドを使うとフォークしてしまって大量に叩くとパフォーマンス悪い」らしい
つまり、if [ ]; thenのこと

その代用に挙げられていたのが

[[ "$a" = "hoge" ]] && echo "hoge" || echo "fuga"

これを使って・・・・

ファイルがあるかどうかで分岐

[[ -f $file ]] && echo "file aru" || echo "file nai"

ディレクトリがあるかどうかで分岐

[[ -d $dir ]] && echo "dir aru" || echo "dir nai"
[[ ]]

と中身は絶対に半角スペースを開けないとエラーになるので注意

判定を反転させたいときは ! を -dとか-fの前につければいい

あと&&とか||の後の処理を複数行に分けて書きたいときは{ } でくくればOK





ファイルの存在を確認するときにワイルドカードを使いたい
そういうときはlsのエラー結果を使えばいい

ls /hoge/*.txt >/dev/null 2>&1
if [ $? -ne 0 ]; then
# 存在しない場合
else
# 存在する場合
fi

■ 参考 : ファイルの存在確認でワイルドカードを使う

ランキング参加中です

↓クリックしていただけると嬉しいです〜