条件判断、if文


Bashの条件テストのタイプ:
整数テスト
ファイルテスト
文字テスト
条件テストの式:
[ expreesion ]
    [[ expreesion ]]
    test expreesion
整数テスト:
-eq:2つの整数が等しいかどうかをテストします.例えば$A-eq$B
-ne:2つの整数が等しくないかどうかをテストします.待たないで、本当です;等しい、偽り;
-gt:1つの数が別の数より大きいかどうかをテストします.より大きいそうでなければ、偽物です.
-lt:1つの数が他の数より小さいかどうかをテストします.より小さいそうでなければ、偽物です.
-ge:以上
-le:以下
ファイルテスト:
-e FILE:ファイルが存在するかどうかをテストする
-f FILE:テストファイルが通常ファイルかどうか
-d FILE:指定されたパスがディレクトリであるかどうかをテストします
-r FILE:指定されたファイルに対して現在のユーザーが読み取り権限を持っているかどうかをテストします.
-w FILE:現在のユーザーが指定したファイルに書き込み権限を持っているかどうかをテストします.
-x FILE:現在のユーザーが指定したファイルに対して実行権限を持っているかどうかをテストします.
-s FILE:現在のファイルが空ではないか、空ではないか、空ではないか、空ではないかをテストします.
文字テスト:
==テストが等しいかどうか、等しいのは真で、等しくないのは偽です
   !=: テストが等しくないかどうか、待たないのは本当で、待つのは偽です
=~:左の文字列が右のパターンに一致するか否かを判断する.一般的に[[]]に用いられる.
>:より大きい
<:より小さい
-n string:指定した文字列が空であるかどうか、空であれば真であり、空でなければ偽であるかどうかをテストします.
-z string:指定した文字列が空ではなく、空が真ではなく、空が偽であるかどうかをテストします.
コマンド間の論理関係:
論理と:&&
第1の条件が偽である場合、第2の条件はこれ以上判断する必要はなく、最終的な結果はすでにある.
第1の条件が真である場合、第2の条件は判断しなければならない.
論理または:|
第1の条件が真である場合、第2の条件はこれ以上判断する必要はなく、最終的な結果はすでにある.
第1の条件が偽である場合、第2の条件は判断しなければならない.
論理非:!
単純な例
ユーザーが存在する場合は、ユーザーが存在することを示します.そうでなければ、このユーザーを追加します.
[root@localhost ~]# id user1 && echo "user1" || useradd user1

ユーザーが存在しない場合は、追加します.それ以外の場合は、既に存在することを示します.
[root@localhost ~]# ! id user1 && useradd user1 || echo "user1 exists"

/etc/inittabファイルの行数が100より大きい場合は、大きなファイルが表示されます.
[root@localhost ~]# [ `wc -l /etc/inittab | cut -d' ' -f1` -gt 100 ] && echo "large file"

if条件判断、制御構造
単一ブランチif文
if  ; then(then ; )
 statement1
 statement2
 ...
fi

二重ブランチのif文:
if  ; then
statement1
statement2
...
else
statement3
statement4
...
fi

マルチブランチif文:
if  1; then
 statement1
 ...
elif  2; then
 statement2
 ...
elif  3; then
 statement3
 ...
else
 statement4
 ...
fi

例:
ユーザーが存在する場合は、ユーザーが存在することを示します.そうでなければ、このユーザーを追加します.
#!/bin/bash
if id user1 &>/dev/null ;then
  echo "user1 exists"
else
  useradd user1
fi

ユーザに対して、UIDが0の場合、管理者として表示されます.それ以外の場合は、通常のユーザーとして表示されます.
#!/bin/bash
USERNAME=root
USERID=`id -u $USERNAME`
if [ $USERID -eq 0 ];then
  echo "$USERNAME is admin"
else
  echo "$USERNAME is a common user"
fi

ファイルを指定します.通常のファイルであれば表示されます.ディレクトリであれば、表示されます.それ以外の場合、これは認識できないファイルです.
#!/bin/bash
FILENAME=/etc/passwd
if [ -f $FILENAME ];then
  echo "$FILENAME"
elif [ -d $FILENAME ];then
  echo "$FILENAME"
else
 echo "wu fa shi bie gai wen jian"
fi

パラメータがq、Q、quit、Quitなどのスクリプトにパラメータ(単一文字でよい)を渡すと、スクリプトを終了します.そうでなければ、ユーザーのパラメータが表示されます.
#!/bin/bash
if [ $1 == q ];then
  echo "Quiting..."
  exit 1
elif [ $1 == Q ];then
  echo "Quiting..."
  exit 2
elif [ $1 == quit ];then
  echo "Quiting..."
  exit 3
elif [ $1 == Quit ];then
  echo "Quiting..."
  exit 4
else
  echo "$1"
fi