68

ifファイルをチェックする条件には、との2つのスイッチがあり-eます-f

これら2つの違いは何ですか?

4

4 に答える 4

95

参照:http ://tldp.org/LDP/Bash-Beginners-Guide/html/sect_07_01.html

これらは「ifスイッチ」ではなく、「テストスイッチ」であると思います([]括弧内で使用する必要があるためです。

しかし、違いは次のとおりです。

[ -e FILE ]FILEが存在する場合はTrue。

これは、ディレクトリとディレクトリの両方に対してtrueを返します。/etc/hosts/dev/null

[ -f FILE ]FILEが存在し、通常のファイルである場合はTrue。これは、(通常のファイルではないため)の場合はtrue、for/etc/hostsの場合はfalseを返し、ディレクトリであるための場合はfalseを返します。/dev/null/dev

于 2012-04-18T07:18:05.850 に答える
49
$ man bash

       -e file
              True if file exists.
       -f file
              True if file exists and is a regular file.

通常のファイルとは、ディレクトリ、シンボリックリンク、ソケット、デバイスなどではないものです。

于 2012-04-18T07:10:19.047 に答える
6

ifステートメントは、実際にはプログラム「test」をテストに使用します。ifステートメントは次の2つの方法で記述できます。

if [ -e filename ];

また

if test -e filename;

これを知っている場合は、「test」のマニュアルページを簡単にチェックして、さまざまなテストの意味を見つけることができます。

man test
于 2012-04-18T08:22:39.733 に答える
5

-e任意のタイプのファイルシステムオブジェクトをチェックします。通常のファイル-f のみをチェックします。

于 2012-04-18T07:11:22.720 に答える