Bashシェルスクリプトにファイルまたはディレクトリが存在するかどうかを確認する方法

Bashスクリプトからファイルまたはディレクトリが存在するかどうかを確認する

Bashは、Linuxで定期的に実行されるコマンドを自動化するために使用されます。ファイル/ディレクトリの操作を目的としたコマンドは非常に頻繁に使用され、通常、そのようなコマンドを実行する前に、特定のファイルまたはディレクトリが存在するかどうかを確認する必要があります。このチェックの実行方法を見てみましょう。

構文と使用法

ファイル

ファイルが存在するかどうかを確認するには、次の構文を使用します。

[-f]

表現 [-f] 0を返します。つまり、成功した場合 存在し、存在しない場合はゼロ以外のステータスを返します。通常、これは条件として使用されます もしも 声明。

if [-f] then fi

戻り値を無効にするには、単に前に -f 否定演算子を使用して(!).

もしも [ ! -f]そしてfi

この場合、ファイルが 存在しません、返されたゼロ以外のステータス(false)は無効になり、0(true)と見なされるためです。

チェックするファイルが現在のディレクトリに存在せず、他のディレクトリに存在する場合は、ファイル名だけでなく、ファイルのフルパスを指定する必要があることに注意してください。

ディレクトリ

ファイルのチェックに使用されるのと同様の構文が、ディレクトリのチェックに使用されます。

[-d]

ファイルのステートメントと同様に、このステートメントは、ディレクトリが0の場合、0、つまり成功を返します。 存在し、ゼロ以外、つまり、存在しない場合は障害ステータスが返されます。これは、一般的に使用されます もしも ステートメント条件。

if [-d] then fi

返されたステータスを無効にするには、 -d 否定演算子を使用して(!).

もしも [ ! -d]そしてfi

この場合、ディレクトリが存在しない場合は条件が満たされ(ステータス0)、ディレクトリが存在する場合は失敗します(ステータスがゼロ以外)。

ファイルについて前述したように、チェックするディレクトリが現在のディレクトリではなく別の場所に存在する場合は、ディレクトリ名だけでなく、ディレクトリパス全体を入力する必要があります。

💡角かっこ構文( [...] )ここで使用されているのは、実際にはLinuxコマンドです。 テスト。オプション -f-d このコマンドの機能です。詳細については、テストのマニュアルページを参照してください( 男テスト ).

Bashスクリプトから確認する

上記の例では、端末で直接構文を使用しています。ループまたは条件文(もしも この場合)、プロンプトを続行し、ユーザーがブロックの続行を入力できるようにします。

同じ構文をBashスクリプト内から使用できます。

The #!/ bin / bash 開始時に、ファイルの実行時に使用されるインタプリタを指定します。 Bashは現在最も一般的に使用されているシェルですが、一部のユーザーは次のようなシェルを好みます。 zsh、このファイルの先頭でbashの代わりに指定する必要があります。

実行権限を付与するには このファイルに対して、次を実行します。

chmod + x test.sh

ついに、 ファイルを実行するには、 走る:

./test.sh