shell学習の条件判断test


1.『ファイルタイプ』に従って判断する(存在するか否か)
-e:この『ファイル』は存在しますか?真(常用)-f:この『ファイル』は普通のファイル(file)ですか?(常用)-d:この『ファイル』はディレクトリファイル(directory)?(常用)-b:この『ファイル』はブロックデバイスファイル(block devic)?デバイス-c:この『ファイル』は文字デバイスファイル(character device)?デバイス
-s:『ファイル』を変更して空ではありませんか?-S:この『ファイル』はソケットファイル(Socket)?ファイル-p:この『ファイル』はパイプファイルFIFO(pipe)ですか?ファイル-L:この『ファイル』はシンボルリンクファイルですか?ファイル
2つの判定フォーマット
ケース:
[root@root /]# cd mnt/
[root@root mnt]# ls  
abc.txt
[root@root /]# test -e /mnt/abc.txt /*         */
[root@root /]# echo $? /*             。   0,   1 */
0
[root@root /]# [ -e /mnt/abc ]  /*  .            */
[root@root /]# echo $?
1
  echo $?    ,    && ||              。    :
[root@root /]# [ -e /mnt/abc.txt ] && echo "yes"  || echo "no"  
yes

2.『書類権限』に従って判断する(存在するか否か)
-r:ファイル名に「読み取り可能」のプロパティがありますか?(常用)-w:このファイル名に『書き込み可能』の属性はありますか?-x:このファイル名に『実行可能』の属性はありますか?-u:このファイル名に『SUID』の権限はありますか?-g:このファイル名に『SGID』の権限はありますか?-k:このファイル名に『Sticky Bit』の権限はありますか?-s:このファイル名は『空白以外のファイル』?
例:ファイルの書き込み可能な実行権限を確認します(プライマリ・グループに属する他の人が1つ存在する限り、正しく出力されます).
[root@root mnt]# ls -l
    0
-rw-r--r--. 1 root root 0 10  18 01:55 123.txt
-rw-r--r--. 1 root root 0 10  17 23:39 abc.txt
[root@root mnt]# 
[root@root mnt]# [ -x abc.txt ] && echo "yes" || echo "no"
no
[root@root mnt]# [ -w abc.txt ] && echo "yes" || echo "no"
yes

3.両ファイル間の比較-nt(newer than)は、file 1がfile 2より新しい-ot(older than)であるか否かを判定し、file 1がfile 2より古い-efであるか否かを判定し、file 2とfile 2が同一ファイルであるか否かを判定し、hard linkを判定する判定に用いることができる.主な意味は、2つのファイルが同じinode番号を指しているかどうかを判定することです.
 
例:判定ファイルabc.txtがファイル123よりも大きいかどうか.txt新規
[root@root mnt]# ls -l
    0
-rw-r--r--. 1 root root 0 10  18 01:55 123.txt
-rw-r--r--. 1 root root 0 10  17 23:39 abc.txt
[root@root mnt]# [ abc.txt -nt 123.txt ] && echo "yes" || echo "no" 
no

4.整数間の判定−eq両数値が等しい(equal)−ne両数値が等しくない(not equal)−gt n 1がn 2(greater than)−ltn 1がn 2(less than)−ge n 1がn 2(greater than or equal)−le n 1がn 2(less than or equal)以下である
例:/*22が23に等しいかどうか、出力yesであり、出力no*/ではない
[root@root /]# [ 22 -eq 23 ] && echo "yes" || echo "no"  
no

5.文字列の判断-z:文字列が0かどうか判定しますか?空の文字列の場合はtrueです.-n:文字列が0でないかどうかを判定します.空の文字列の場合はfalseです.注意:-nは、文字1==文字2を省略して、文字1が文字2に等しいかどうかを判定し、等しい場合はtrue文字1!=文字2は、文字1が文字2に等しくないか否かを判断し、等しい場合falseに返信する
例:変数aaと変数bbが等しいか否かを判断する
[root@root /]# aa=qaz /*    */
[root@root /]# bb=qaz
[root@root /]# [ $aa == $bb ] && echo "yes" || echo "no"
yes

6.多重条件判定、
-a(and)両状況は同時に成立し,真に戻る.
-o(or)両状況はいずれも成立し,真に戻る.
! 論理非、元の判断式を逆にする
例:変数aaを付与、変数aaが存在するか否かを判断し、存在すると変数aaが30に等しいか否かを判断する.はいyes、そうでなければno
[root@root /]# aa=30
[root@root /]# [ -n $aa -a $aa -eq 30 ] && echo "yes" || echo "no"
yes