どーも!marusukeです!
シェルスクリプトの条件分岐「if構文」について説明します!
シェルスクリプトのif構文でできること
シェルスクリプトのif
構文は、条件分岐を実装するために使用されます。指定した条件が真(0、成功)であれば、特定のコマンドを実行し、偽(0以外、失敗)であれば別の処理を行うことができます。
基本的なifの構文
if [ 条件式 ]; then
コマンド1
elif [ 別の条件式 ]; then
コマンド2
else
コマンド3
fi
if [ 条件式 ]
:条件が成立する(真)場合、then
の後のコマンドを実行しますelif [ 別の条件式 ]
:if
の条件が偽の場合、次の条件を評価しますelse
:すべての条件が偽の場合に実行される部分fi
:if
文の終了を示します
if構文の使用例
以下は、ファイルが存在するかどうかを確認し、存在すればそのファイルの内容を表示し、存在しなければエラーメッセージを出すスクリプトの例です
#!/bin/bash
# チェックするファイル
filename=$1
# ファイルが存在するかチェック
if [ -e "$filename" ]; then
echo "ファイル '$filename' は存在します。"
cat "$filename"
else
echo "ファイル '$filename' は存在しません。"
fi
出力結果
例1: ファイルが存在する場合
$ ./check_file.sh myfile.txt
ファイル 'myfile.txt' は存在します。
(ファイル内容が表示される)
例2: ファイルが存在しない場合
$ ./check_file.sh non_existent.txt
ファイル 'non_existent.txt' は存在しません。
よく使われる条件式
if
構文では、次のような条件式がよく使われます
ファイル関連の条件式
条件式 | 説明 |
---|---|
[ -e ファイル名 ] | ファイルが存在するか |
[ -f ファイル名 ] | 通常のファイルが存在するか |
[ -d ディレクトリ ] | ディレクトリが存在するか |
[ -r ファイル名 ] | ファイルが読み取り可能か |
[ -w ファイル名 ] | ファイルが書き込み可能か |
[ -x ファイル名 ] | ファイルが実行可能か |
数値比較
条件式 | 説明 |
---|---|
[ "$a" -eq "$b" ] | aとbが等しい |
[ "$a" -ne "$b" ] | aとbが等しくない |
[ "$a" -gt "$b" ] | aがbより大きい |
[ "$a" -lt "$b" ] | aがbより小さい |
文字列比較
条件式 | 説明 |
---|---|
[ "$a" = "$b" ] | 文字列aがbに等しい |
[ "$a" != "$b" ] | 文字列aがbに等しくない |
[ -z "$a" ] | 文字列aが空である |
[ -n "$a" ] | 文字列aが空でない |
複雑な条件式
複数の条件を組み合わせる場合には、論理演算子を使います
演算子 | 説明 |
---|---|
&& | 両方の条件が真の場合のみ実行 |
|| | どちらかの条件が真の場合実行 |
例:複数の条件を使ったスクリプト
#!/bin/bash
if [ -f "$1" ] && [ -r "$1" ]; then
echo "ファイル '$1' は存在し、読み取り可能です。"
else
echo "ファイルが存在しないか、読み取りできません。"
fi
以上です!
ここまで読んでいただきありがとうございました!
コメント