最近何かのことを調べていて以下のブログにたどり着いた
色々とページを見てたら、目からウロコが落ちた
■ 参考 : 最近覚えたシェルスクリプトの小ネタ
「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
ランキング参加中です
↓クリックしていただけると嬉しいです〜