スポンサーリンク
ファイルの存在をチェックしてコマンド実行
下記のように、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
スポンサーリンク