【bash】if else文の使い方を解説します【初心者向け】

Linux シェル/bash

bashのif else文について調べる人

bashのif else文について調べる人
「bashで条件文の使い方をマスターしたいので、まずはif文の使い方について知りたいです。条件文を書くとき、文字列の比較と数字の比較方法の違いについても知りたいです。またelse文は省略できますか?」

こんな疑問を解決します。

本記事の内容

この記事を書いている私は金融エンジニア歴12年。IRIXやSolarisなどのUnixやCygwin、mac、Linuxなど様々な環境でbashによるスクリプティングを行ってきました。

bashは極めて簡単なプログラミング言語ですが、空白の有無などで構文エラーとなること、javaなど一般的なプログラミング言語に慣れている方にとっては直感的ではない構文であることから、今回はbashの条件文(if else文)を記事にしました。

本記事では、細かい構文に迷ったら、例からコピー&ペーストして使えることを目指しました。少しでもお役に立てますと幸いです。

1.bashにおけるif else文の使い方

bashにおけるif else文の書き方

bashでif文を使う場合、最も基本的な構文は以下の通りです

if [ 《条件文》 ]; then
《コマンド1》
else
《コマンド2》
fi

具体例

具体例として、以下に文字列同士(str1とstr2)を比較する例を示します。

否定文

条件文では、=の代わりに!=を用いることで否定の条件文になります。

具体例

よくある構文エラー

よくある構文エラーの例を示します。

2.数字の比較でif else文を使う

数字同士の比較では=の代わりに-eqを用います。

具体例

もちろん数字の比較演算子は-eq以外にもあり、以下を用いて様々な大小比較が可能です。

演算子 意味
数値1 -eq 数値2 数値1と数値2が等しければ真
数値1 -ne 数値2 数値1と数値2が等しくなければ真
数値1 -gt 数値2 数値1が数値2より大きければ真
数値1 -lt 数値2 数値1が数値2より小さければ真
数値1 -ge 数値2 数値1が数値2以上であれば真
数値1 -le 数値2 数値1が数値2以下であれば真

3.ファイル状態を条件にif文を使う

ファイル状態を条件にif文を使う

bashでは文字列や数字の比較だけでなく、ファイルに関する演算子も提供されています。

具体例

演算子 意味
-d ファイル名 ファイル名がディレクトリであれば真
-f ファイル名 ファイルであれば真
-e ファイル名 ファイルがあれば真
-L ファイル名 シンボリックリンクであれば真
-r ファイル名 読み取り可能であれば真
-w ファイル名 書き込み可能であれば真
-x ファイル名 実行可能であれば真
-s ファイル名 ファイルが存在し、空でなければ真
-S ファイル名 ファイルがソケットならば真
ファイルA -nt ファイルB ファイルAがファイルBより新しければ真
ファイルA -ot ファイルB ファイルAがファイルBより古ければ真

4.else文を省略する方法

else文を省略する方法

bashでif文を使う場合、else文を省略することが可能です

if [ 《条件文》 ]; then
《コマンド1》
fi

この場合、条件文にマッチしない場合には何も処理を行いません。

具体例

具体例として、以下に文字列同士(str1とstr2)を比較する例を示します。

5.if else文を省略する方法

if else文を省略する方法

if文は、次のように省略して記載することも可能です

[ 《条件文》 ] && 《コマンド1》 || 《コマンド2》

具体例

書き方は異なりますが、if else文と全く同じ意味、同じ結果になります。

今回は以上です。構文エラーにならないよう、コピー&ペーストして使っていただければと思います。

bashでのif else文の使い方の参考になりますと幸いです。