0、条件テストには、ファイルテスト、数値比較、文字列比較の3種類があります。
1、条件式をテストします
この文法はエラーを返さず、対応する値のみを返すことに注意してください。具体的な例については、次の図を参照してください。test -d / homeディレクトリ/ homeが存在するかどうかを判別し、存在する場合はtrueを返し、存在しない場合はfalseを返します。
次のスクリプトの意味は、ディレクトリ/ var / mysql_backが存在しない場合にディレクトリを作成することです。
#!/usr/bin/bash
back_dir=/var/mysql_back
if ! test -d $back_dir; then
mkdir -p $back_dir
fi
2. [条件式]
[-d / home]とtest-d / homeの機能はまったく同じであることに注意してください。異なるテストの直後に式を続けることができ、[]の左角括弧はテスト用のコマンドです(注[はコマンドです)、右角括弧]は[角括弧]の必須パラメーターです。実際、[条件式]はテストの機能であることを忘れないでください。
ファイルテスト[\ dディレクトリ]ディレクトリが存在するかどうかをテストします
数値比較[$ variable name-eq | -ne 0] -eqテスト前の変数が0に等しい、-neテスト前の変数が0に等しくない
文字列の比較[$ variable name == string]変数名が文字列と等しいかどうかを判断するためのテスト
3。[[条件式]]
[式]に似ています。[[]]と[]は、2つの文を結合またはORするときに構文が異なります。[ステートメント1-aステートメント2] [[ステートメント1 &&ステートメント2]]テストステートメント1とステートメント2は正しいですか?[ステートメント1-oステートメント2] [[ステートメント1 ||ステートメント2]]テストステートメント1とステートメント2のいずれかが正しいですか?
4.ファイルテスト
[-e dir | file]指定されたディレクトリまたはファイルが存在するかどうかをテストします
[-ddir]指定されたディレクトリが存在するかどうかをテストします
[-fファイル]ファイルが存在するかどうかをテストします
[-rfile]現在のユーザーがファイルへの読み取り権限を持っているかどうかをテストします
[-xファイル]現在のユーザーがファイルに対する実行権限を持っているかどうかをテストします
[-wfile]現在のユーザーがファイルへの書き込み権限を持っているかどうかをテストします
[-Lファイル]次のファイルが接続かどうかをテストします
5.数値比較
[$ A -gt 10] Aが10より大きいかどうかをテストします
[$ A -lt 10] Aが10未満かどうかをテストします
[$ A -eq 10] Aが10に等しいかどうかをテストします
[$ A -ne 10] Aが10に等しくないかどうかをテストします
[$ A -ge 10] Aが10以上かどうかをテストします
[$ A -le 10] Aが10以下かどうかをテストします
上記の文法は覚えにくいかもしれませんので、cスタイルの文法を使用することができます。(())を使用して、括弧内の判断ステートメントを実行します。
6、文字列の比較
ヒント:二重引用符を使用してください
たとえば、コマンド["$ USER" == "root"]; echo $?は、現在のユーザーがrootの場合は0を出力し、そうでない場合は1を出力することを意味します。ここで、前のコマンドを[$ USER == root]と記述した場合、構文エラーが報告される可能性があることに注意してください。不必要なトラブルを避けるために、「」を使用して文字列変数を作成することに慣れてください。
[-z "$ var"]テスト変数varの長さは0ですか?
[-n '' $ var "]テスト変数varの長さは0ではありませんか?
コマンドの概要:
id username;返されるのはユーザーの情報です。そのようなユーザーがいない場合は、当然エラーが報告されます。
bash -n.shファイル;このスクリプトファイルの構文を確認してください。