【Linux】シェルスクリプトの条件分岐:if構文

Linux

どーも!marusukeです!

シェルスクリプトの条件分岐「if構文」について説明します!

シェルスクリプトのif構文でできること

シェルスクリプトのif構文は、条件分岐を実装するために使用されます。指定した条件が真(0、成功)であれば、特定のコマンドを実行し、偽(0以外、失敗)であれば別の処理を行うことができます。

基本的なifの構文

if [ 条件式 ]; then
  コマンド1
elif [ 別の条件式 ]; then
  コマンド2
else
  コマンド3
fi
  • if [ 条件式 ]:条件が成立する(真)場合、thenの後のコマンドを実行します
  • elif [ 別の条件式 ]ifの条件が偽の場合、次の条件を評価します
  • else:すべての条件が偽の場合に実行される部分
  • fiif文の終了を示します

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

以上です!

ここまで読んでいただきありがとうございました!

コメント

タイトルとURLをコピーしました