【bash】if else文の使い方【初心者向け】
こんにちは。
普段はIT業界についてのブログを執筆してるエンジニアです。
» 参考:プログラマーの年収は200万円以下です【IT業界の残酷な成功法則】
» 参考:【一生使える本です】bashの解説書 厳選3選【おすすめ】
今回は、bashについての解説記事です。
bashのif else文について調べる人
「bashで条件文の使い方をマスターしたいので、まずはif文の使い方について知りたいです。条件文を書くとき、文字列の比較と数字の比較方法の違いについても知りたいです。またelse文は省略できますか?」
こんな疑問を解決します。
本記事の内容
- 1. bashにおける、if else文の使い方
- 2. 数字同志の比較でif else文を使う
- 3. ファイル状態を条件にif文を使う
- 4. if文でelse句を省略して書く方法
- 5. if else文を 丸ごと省略する方法
この記事を書いている私は金融エンジニア歴12年。IRIXやSolarisなどのUnixやCygwin、mac、Linuxなど様々な環境でbashによるスクリプティングを行ってきました。
bashは極めて簡単なプログラミング言語ですが、空白の有無などで構文エラーとなること、javaなど一般的なプログラミング言語に慣れている方にとっては直感的ではない構文であることから、今回はbashの条件文(if else文)を記事にしました。
本記事では、細かい構文に迷ったら、例からコピー&ペーストして使えることを目指しました。少しでもお役に立てますと幸いです。
1.bashにおけるif else文の使い方
bashでif文を使う場合、最も基本的な構文は以下の通りです
《コマンド1》
else
《コマンド2》
fi
《コマンド》
fi
具体例
具体例として、以下に文字列同士(str1とstr2)を比較する例を示します。
str1="string" str2="string" if [ "$str1" = "$str2" ]; then echo "同じ文字列です" else echo "異なる文字列です" fi
否定文
条件文では、=
の代わりに!=
を用いることで否定の条件文になります。
具体例
str1="string" str2="string" if [ "$str1" != "$str2" ]; then echo "異なる文字列です" else echo "同じ文字列です" fi
if文のよくある構文エラー
if文を使うとき、次のように記述するとエラーとなってしまいます。
if [ "$str1" = "$str2" ]; then if ["$str1" = "$str2" ]; then #構文エラー:[と"$str1"の間に空白がない if [ "$str1" = "$str2"]; then #構文エラー:"$str2"と]の間に空白がない if [ "$str1" = "$str2" ] then #構文エラー:]の後に;がない
2.数字の比較でif else文を使う
数字同士の比較では=
の代わりに-eq
を用います。
具体例
num1=100 num2=200 if [ $num1 -eq $num2 ]; then echo "同じ数です" else echo "異なる数です" fi
もちろん数字の比較演算子は-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文中でファイル状態を条件にする
bashでは文字列や数字の比較だけでなく、ファイルに関する演算子も提供されています。
具体例
file1="filename.txt" if [ -f $file1 ]; then echo "$file1は存在します" else echo "$file1は存在しません" fi
演算子 | 意味 | |
---|---|---|
-d ファイル名 | ファイル名がディレクトリであれば真 | |
-f ファイル名 | ファイルであれば真 | |
-e ファイル名 | ファイルがあれば真 | |
-L ファイル名 | シンボリックリンクであれば真 | |
-r ファイル名 | 読み取り可能であれば真 | |
-w ファイル名 | 書き込み可能であれば真 | |
-x ファイル名 | 実行可能であれば真 | |
-s ファイル名 | ファイルが存在し、空でなければ真 | |
-S ファイル名 | ファイルがソケットならば真 | |
ファイルA -nt ファイルB | ファイルAがファイルBより新しければ真 | |
ファイルA -ot ファイルB | ファイルAがファイルBより古ければ真 |
4.else文を省略する方法
bashでif文を使う場合、else文を省略することが可能です
《コマンド1》
fi
この場合、条件文にマッチしない場合には何も処理を行いません。
具体例
具体例として、以下に文字列同士(str1とstr2)を比較する例を示します。
str1="string" str2="string" if [ "$str1" = "$str2" ]; then echo "同じ文字列です" fi
5.if else文を省略する方法
if文は、次のように省略して記載することも可能です
具体例
str1="string" str2="string" [ "$str1" = "$str2" ] && echo "同じ文字列です" || echo "異なる文字列です"
書き方は異なりますが、if else文と全く同じ意味、同じ結果になります。
今回は以上です。構文エラーにならないよう、コピー&ペーストして使っていただければと思います。
bashでのif else文の使い方の参考になりますと幸いです。
Blog TOP シェルスクリプトを勉強したい人向け|bashの使い方 記事まとめ
bashの使い方 - もくじ
シェルとは
- シェルとは
- シェルはOSと会話するための言語
- シェルの種類(bash以外のシェル)
- シェルスクリプトとは
- シェルスクリプトの書き方条件式
- if else文
- 文字列の比較
- &&と||の使い方
- case文文字列操作
- 文字列の連結
- 文字列の一部を切り出す繰り返し
- for文
- while文
- while文でリストから1つ要素ずつ処理する定数
- 定数の定義
関数
- 関数の定義
デバッグ
実行権限
本
「今の会社を辞めて転職します。エンジニア職に強みのあるおすすめの転職サイト・転職エージェントを教えて欲しい。また好条件で転職するにはどうすれば良いですか?」こんな悩みに答えます。 ITエンジニアに強いおすすめの転職サイト・転職エージェント3選 転職成功には強くてニューゲームが条件。どうやって実現する?