スポンサーリンク

ファイルの存在をチェックしてコマンド実行

下記のように、if文の中の先頭に-eをつけます。
ファイルが存在したら、catで表示させています。
※MACターミナル(BSD系)での動作確認です。

参考:[シェル]if文でファイルの実行権限をチェックして実行

 $ cat sample.sh 
#!/bin/sh

filePath="./dir1/file1.txt"
if [ -e $filePath ]; then
	cat $filePath
else
	echo ファイルなし
fi

下記が実行結果になります。
 $ ./sample.sh 
ファイルの中身です。

ファイルがない場合は、catをすると下記のようになりますね。
これを避けるなら、上記のチェックが活きますね。
 $ cat no.txt
cat: no.txt: No such file or directory

スポンサーリンク

ディレクトリの存在をチェックしてコマンド実行

ディレクトリの存在をチェックする場合も同様です。
ディレクトリが存在したら、findで再帰的に表示させています。

 $ cat sample2.sh 
#!/bin/sh

dirPath="./dir1"
if [ -e $dirPath ]; then
	find $dirPath
else
	echo ディレクトリなし
fi

下記が実行結果になります。
 $ ./sample2.sh 
./dir1
./dir1/.DS_Store
./dir1/dir2
./dir1/dir2/file2.txt
./dir1/file1.txt

findを実行してディレクトリが存在しない場合は、下記のようになります。
避けるならチェックが必要ですね。
 $ find ./no
find: ./no: No such file or directory

スポンサーリンク