シェルでファイルの存在チェック

こんにちは、さるまりんです。

シェルスクリプトでファイルの存在判断のやり方です。

ファイルがある時にだけこの処理を行うといったことを実現するためのものですね。

file_aru.sh (ファイルある?スクリプト – ネーミングは許してください)

#!/bin/sh

FILE=$1

if [ -e $FILE ]; then
    echo "$FILE あります。"
fi

以下の部分です。

if [ -e ファイル ]; then
    ファイルが存在するときの処理
fi

$FILEのファイルが存在すれば「あります」の表示。

file_aru.shを実行してみるとこんな感じになります。

$ ./file_aru.sh aaa.txt
$ touch aaa.txt
$ ./file_aru.sh aaa.txt 
aaa.txt あります。
$

1行目 aaa.txtがないので何も起こらずスクリプトは終了します。

2行目 touchaaa.txtを作ります。

3行目 今度はaaa.txtがあるので「aaa.txt あります。」と表示されます。

逆にない時はどうするでしょうか?

!で実現します。!は論理否定演算子、Logical Negation Operatorとややこしい名前ですが、簡単にいうと否定、notです。

次のように書きます。

if [ ! -e ファイル ]; then
    ファイルが存在しないときの処理
fi

シェルスクリプトをパパッとかけると日々の仕事がかなり楽になるように思っています。

これがこれまで面倒くさがって書いていなかったんです。

これからちょっとずつでも覚えて書いていきたいです。

なので、シェルスクリプトのTipsもまたお付き合いよろしくお願いします。

読んでくださってありがとうございました。

それではまた!