bashを利用しif .. then .. fi を利用し、ファイルおよびディレクトリの有無を調べるサンプルシェルスクリプトを以下に記します。
ディレクトリかどうかは、-dオプションを利用します。
以下のサンプルシェルスクリプトは、fooディレクトリを作成し、-dオプションを使用してディレクトリの有無を確認しています。
途中、-fオプションを利用してファイルかどうかを確認しています。
次に、fooディレクトリを削除し!を利用しfooディレクトリが存在しない場合、if ... fiが実行されるようになっています。
#/bin/bash mkdir foo if [ -d foo ]; then echo "foo directory found." fi if [ -f foo ]; then echo "foo file found." fi rmdir foo if [ ! -d foo ]; then echo "foo directory not found." fi
$ chmod +x chk_dir.sh $ ./chk_dir.sh foo directory found. foo directory not found.実行結果の出力からわかるように、ディレクトリの有無は-dオプションで確認できます。
ファイルでもディレクトリでも存在しているかどうかのチェックは、-eオプションを利用します。
以下のサンプルシェルスクリプトは、fooディレクトリとbarファイルを作成し、-eオプションで有無確認を行い、その内部ブロックでディレクトリなのかファイルなのかを確認しています。
#/bin/bash mkdir foo touch bar if [ -e foo ]; then echo "foo found." if [ -d foo ]; then echo "foo is directory." fi if [ -f foo ]; then echo "foo is file." fi fi if [ -e bar ]; then echo "bar found." if [ -d bar ]; then echo "bar is directory." fi if [ -f bar ]; then echo "bar is file." fi fi rmdir foo rm bar
$ chmod +x chk_dir_file.sh $ ./chk_dir_file.sh foo found. foo is directory. bar found. bar is file.
上記の例で既に記述していますが、-fオプションによりファイル(ディレクトリを除く)の有無を確認することができます。
以下のサンプルシェルスクリプトファイルは、fooファイルを作成し-fオプションでファイルの有無を確認しています。
途中、-dオプションを利用してディレクトリかどうかを確認しています。
次に、fooファイルを削除し!を利用しfooファイルが存在しない場合、if ... fiが実行されるようになっています。
#/bin/bash touch foo if [ -f foo ]; then echo "foo file found." fi if [ -d foo ]; then echo "foo directory found." fi rm foo if [ ! -f foo ]; then echo "foo file not found." fi