linux条件判断の判断ファイルが存在するか否か


パラメータ
説明
-eファイル名
ファイルが存在する場合は真
-rファイル名
ファイルが存在し、読み取り可能である場合は真
-wファイル名
ファイルが存在し、書き込み可能な場合は真
-xファイル名
ファイルが存在し、実行可能である場合は真
-sファイル名
ファイルが存在し、少なくとも1文字が真である場合
-dファイル名
ファイルが存在し、ディレクトリが真の場合
-fファイル名
ファイルが存在し、通常のファイルである場合は真
-cファイル名
ファイルが存在し、文字型の特殊なファイルである場合は真
-bファイル名
ファイルが存在し、ブロック特殊ファイルである場合は真
実例:
cd /binif test -e ./bashthen
    echo '     !'else
    echo '     !'fi

出力結果:
     !

また、Shellは、(-a)、または(-o)、非(!)3つの論理オペレータを使用して、テスト条件を接続します.優先度は「!」です.最も高く、「-a」に次いで、「-o」が最も低い.例:
cd /binif test -e ./notFile -o -e ./bashthen
    echo '       !'else
    echo '        'fi

出力結果:
ファイルが存在します!
いくつかの例を挙げます.
a.ファイルが存在し、通常のファイルである場合は真
eg:
#判断/ciscoが存在しファイルであるか否かを判断し、そうであれば出力/cisco is a file
#いいえ、出力/ciscoはディレクトリです
vim 4.sh
if [ -f/cisco ]
then
        echo/cisco is a file
else
        echo/cisco is director
fi
実験の下:
[root@wenwen ~]# touch/cisco
[root@wenwen ~]# ls
123   1.txt  3.sh  567.sql sedWSS 6 ggデスクトップ
1.sh  2.sh   4.sh  prac3.py 1100間の質量数を求める.sh
[root@wenwen ~]# ./4.sh 
/cisco is a file
b.ファイルが存在し、ディレクトリが真である場合:
#/cisco/31が存在するか否かを判断してディレクトリである、存在してディレクトリであれば「ok」を出力し、存在しないか/cisco/31がディレクトリでなければ1を出力し、そのディレクトリ/cisco/31を別途作成する.
vim 3.sh
if [ -d/cisco/31/]
then
        echo ok
else
        echo 1
        rm -rf/cisco/31
        mkdir -p/cisco/31
fi
実験プロセスでは、/ciscoで31というファイルを作成します.
[root@wenwen ~]# cd/cisco
[root@wenwen cisco]# ls
[root@wenwen cisco]# touch 31
[root@wenwen cisco]# cd
[root@wenwen ~]# ./3.sh
1