シェルスクリプトで if 文を使う方法

ShellShellBeginner
今すぐ練習

💡 このチュートリアルは英語版からAIによって翻訳されています。原文を確認するには、 ここをクリックしてください

はじめに

シェルスクリプトは、タスクの自動化やワークフローの効率化に強力なツールです。このチュートリアルでは、シェルプログラミングにおける基本的な構造である if 文の世界に飛び込みます。if 文の構文、構造、および実用的なアプリケーションを理解することで、より堅牢で汎用性の高いシェルスクリプトを書くことができるようになります。


Skills Graph

%%%%{init: {'theme':'neutral'}}%%%% flowchart RL shell(("Shell")) -.-> shell/ControlFlowGroup(["Control Flow"]) shell(("Shell")) -.-> shell/AdvancedScriptingConceptsGroup(["Advanced Scripting Concepts"]) shell/ControlFlowGroup -.-> shell/if_else("If-Else Statements") shell/ControlFlowGroup -.-> shell/cond_expr("Conditional Expressions") shell/ControlFlowGroup -.-> shell/exit_status("Exit and Return Status") shell/AdvancedScriptingConceptsGroup -.-> shell/read_input("Reading Input") subgraph Lab Skills shell/if_else -.-> lab-417314{{"シェルスクリプトで if 文を使う方法"}} shell/cond_expr -.-> lab-417314{{"シェルスクリプトで if 文を使う方法"}} shell/exit_status -.-> lab-417314{{"シェルスクリプトで if 文を使う方法"}} shell/read_input -.-> lab-417314{{"シェルスクリプトで if 文を使う方法"}} end

シェルスクリプトの if 文の紹介

シェルスクリプトの世界では、if 文は特定の条件に基づいて判断を行うことができる基本的な制御構造です。特定の条件が真か偽かに応じて、異なるコードブロックを実行することができます。if 文を効果的に使用する方法を理解することは、堅牢で柔軟なシェルスクリプトを書くために重要です。

シェルスクリプトにおける if 文は、次のようなシンプルな構文に従います。

if [ condition ]; then
  ## commands to be executed if the condition is true
else
  ## commands to be executed if the condition is false
fi

if 文は、角括弧 [ ] で囲まれた条件を評価します。条件が真の場合、then ブロック内のコマンドが実行されます。条件が偽の場合、else ブロック内のコマンドが実行されます。

if 文は、複数の条件をチェックするために elif (else if) 句と共に使用することもできます。

if [ condition1 ]; then
  ## commands to be executed if condition1 is true
elif [ condition2 ]; then
  ## commands to be executed if condition1 is false and condition2 is true
else
  ## commands to be executed if both condition1 and condition2 are false
fi

if 文はシェルスクリプトにおける強力なツールであり、様々な基準に基づいて判断を行うことができる動的で適応性のあるスクリプトを作成することができます。if 文の構文と構造を理解することで、幅広いシナリオを処理できるより高度なシェルスクリプトを書くことができます。

if 文の構文と構造

基本的な if 文の構文

シェルスクリプトにおける if 文の基本的な構文は次の通りです。

if [ condition ]; then
  ## commands to be executed if the condition is true
else
  ## commands to be executed if the condition is false
fi

この構造では、if キーワードの後に角括弧 [ ] で囲まれた条件が続きます。条件が真の場合、then ブロック内のコマンドが実行されます。条件が偽の場合、else ブロック内のコマンドが実行されます。

複合 if 文

シェルスクリプトでは、elif (else if) 句を含む複合 if 文を使用することもできます。これにより、複数の条件をチェックすることができます。

if [ condition1 ]; then
  ## commands to be executed if condition1 is true
elif [ condition2 ]; then
  ## commands to be executed if condition1 is false and condition2 is true
else
  ## commands to be executed if both condition1 and condition2 are false
fi

この場合、最初の条件 (condition1) が真の場合、then ブロック内のコマンドが実行されます。condition1 が偽の場合、スクリプトは 2 番目の条件 (condition2) をチェックします。condition2 が真の場合、elif ブロック内のコマンドが実行されます。condition1condition2 の両方が偽の場合、else ブロック内のコマンドが実行されます。

入れ子になった if 文

より複雑な判断構造を作成するために、if 文の中に他の if 文を入れ子にすることもできます。

if [ condition1 ]; then
  if [ condition2 ]; then
    ## commands to be executed if both condition1 and condition2 are true
  else
    ## commands to be executed if condition1 is true but condition2 is false
  fi
else
  ## commands to be executed if condition1 is false
fi

この例では、内側の if 文が外側の if 文の中に入れ子になっています。内側の if 文は、外側の condition1 が真の場合にのみ評価されます。

if 文のさまざまな構文と構造を理解することで、幅広いシナリオを処理できる、より複雑で汎用性の高いシェルスクリプトを作成することができます。

if 文の実用的なアプリケーション

ファイルの存在と属性のチェック

シェルスクリプトにおける if 文の一般的な使用例の 1 つは、ファイルやディレクトリの存在と属性をチェックすることです。例えば:

if [ -f "/path/to/file.txt" ]; then
  echo "File exists."
else
  echo "File does not exist."
fi

この場合、-f フラグは指定されたファイルが存在するかどうかをチェックします。-d などの他のフラグを使用してディレクトリが存在するかどうかをチェックしたり、-r を使用してファイルが読み取り可能かどうかをチェックしたり、-w を使用してファイルが書き込み可能かどうかをチェックしたりすることもできます。

値の比較

if 文は、数値、文字列、またはコマンドの出力などの値を比較するためによく使用されます。例えば:

num1=10
num2=20

if [ $num1 -lt $num2 ]; then
  echo "$num1 is less than $num2"
else
  echo "$num1 is greater than or equal to $num2"
fi

この例では、-lt フラグは num1num2 より小さいかどうかをチェックします。

終了コードに基づくコマンドの実行

コマンドの終了コードは、if 文でコマンドの成功または失敗を判断するために使用できます。例えば:

./my_script.sh
if [ $? -eq 0 ]; then
  echo "Script executed successfully."
else
  echo "Script failed to execute."
fi

この場合、$? 変数には前のコマンド (my_script.sh) の終了コードが格納されています。終了コードが 0(成功を示す)の場合、最初のブロックが実行されます。それ以外の場合は、2 番目のブロックが実行されます。

ブール演算子を使用した条件の組み合わせ

&&(論理積)、||(論理和)、!(否定)などのブール演算子を使用して、複数の条件を組み合わせることもできます。例えば:

if [ -f "/path/to/file.txt" ] && [ -w "/path/to/file.txt" ]; then
  echo "File exists and is writable."
else
  echo "File does not exist or is not writable."
fi

この場合、条件はファイルが存在し、かつ書き込み可能かどうかをチェックします。

これらの if 文の実用的なアプリケーションを理解することで、幅広いシナリオを処理でき、様々な条件に基づいて判断を行うことができる、より堅牢で汎用性の高いシェルスクリプトを書くことができます。

まとめ

この包括的なガイドでは、シェルスクリプトで if 文を活用する方法を学びました。基本的な構文の理解から実用的な使用例の探索まで、あなたは今やシェルスクリプトに条件付きロジックを組み込む知識を持っています。if 文をマスターすることで、様々なシナリオに適応できる、より動的でインテリジェントなシェルプログラムを作成することができ、自動化の取り組みをより効率的かつ効果的にすることができます。