Bashスクリプトは、LinuxやUnixなどのオペレーティングシステム上でよく使用される強力なスクリプト言語の一つです。特にif文は、条件に基づいて異なる動作をするために非常に重要です。本記事では、Bashスクリプト初心者向けに、基本的なif文の使い方と応用例を徹底解説していきます。これを使いこなせれば、様々なタスクの自動化や効率的なスクリプト作成が可能になります。
Bashスクリプトにおけるif文の基本構造
まず、Bashスクリプトの基本的なif文の構造を理解しましょう。if文は、条件式を評価し、その結果に応じてコードブロックを実行する制御文です。このため、スクリプトが特定の状況に基づいて異なる処理を行うのに役立ちます。
基本構造
if [ 条件式 ]; then
# 条件式が真の場合に実行されるコマンド
else
# 条件式が偽の場合に実行されるコマンド
fi
[ 条件式 ]
の部分は、条件が満たされているかどうかをチェックします。then
以降に書かれたコードは条件が真の場合に実行され、else
以降のコードは偽の場合に実行されます。fi
はif文の終了を示します。
サンプルコード
以下は、簡単なif文の例です。
#!/bin/bash
number=5
if [ $number -gt 0 ]; then
echo "The number is positive."
else
echo "The number is not positive."
fi
このスクリプトは変数number
が0より大きいかどうかを判断し、結果に応じてメッセージを表示します。
if文の条件式
次に、条件式にどのようなオペレーターを使用できるかを見ていきましょう。
文字列比較
-
=
: 左右の文字列が等しい場合に真 -
!=
: 左右の文字列が異なる場合に真
if [ "$str1" = "$str2" ]; then
echo "Strings are equal."
fi
数値比較
-
-eq
: 左辺と右辺の数値が等しい -
-ne
: 左辺と右辺の数値が異なる -
-gt
,-lt
,-ge
,-le
: 数値がそれぞれより大きい、小さい、以上、以下である
if [ $num1 -lt $num2 ]; then
echo "num1 is less than num2."
fi
ファイル比較
-
-e
: ファイルが存在する -
-d
: ディレクトリが存在する -
-f
: ファイルが存在し普通のファイル
file="/path/to/file"
if [ -e $file ]; then
echo "File exists."
fi
複数条件の評価
複雑な判断をする場合には、複数の条件を組み合わせることができます。
-
&&
: 論理積、両方の条件が真である場合 -
||
: 論理和、どちらかの条件が真である場合
if [ $age -ge 18 ] && [ $age -lt 65 ]; then
echo "Person is an adult."
fi
この例では、変数age
が18以上かつ65未満のとき、「Person is an adult.」が表示されます。
if文の入れ子
if文は他のif文の中に入れることができます。これを「入れ子のif文」と言います。
if [ $num1 -gt 0 ]; then
if [ $num1 -lt 10 ]; then
echo "num1 is between 1 and 9."
else
echo "num1 is 10 or greater."
fi
else
echo "num1 is zero or negative."
fi
このスクリプトは、num1
が0より大きく10より小さいか、またはその他の条件でメッセージを分岐させています。
応用例
次に、実際に使われる応用例をいくつか見てみましょう。
ファイル存在チェックスクリプト
以下のスクリプトは、指定されたファイルが存在するかどうかをチェックし、存在する場合のみその内容を表示します。
#!/bin/bash
filename="example.txt"
if [ -f "$filename" ]; then
echo "File $filename found. Displaying contents:"
cat "$filename"
else
echo "File $filename not found."
fi
簡易パスワード確認スクリプト
以下は、ユーザーにパスワードを入力させ、それが特定の条件を満たすかどうかを確認するスクリプトです。
#!/bin/bash
read -sp "Enter your password: " password
echo
min_length=8
if [ ${#password} -ge $min_length ]; then
echo "Password length is sufficient."
else
echo "Password is too short. It should be at least $min_length characters."
fi
まとめ
Bashスクリプトでのif文の使用は、特定の条件下で異なる動作をスクリプトにさせるための基本的かつ重要な技術です。この記事では、基本的なif文の使い方から、条件式の書き方、そして実際の応用例まで幅広く解説しました。これらを身につけることで、Bashスクリプトの活用幅が大きく広がるでしょう。練習を重ねて、ぜひともBashスクリプトのスキルを向上させてください!
コメント