Bashスクリプトは、システム管理や自動化のために頻繁に使用されますが、その中でも条件分岐は非常に重要な役割を果たします。「if」ステートメントを用いることで、特定の条件に基づいてスクリプトの動作を制御することができます。また、複数の条件を組み合わせて「and」条件を使用することで、さらに柔軟な条件指定が可能になります。この記事では、Bashスクリプトで「if」と「and」を活用した条件分岐について詳しく説明し、実践的な例を交えて解説します。
Bashでの基本的な「if」構文
Bashスクリプトにおける「if」ステートメントの基本構文は以下のようになります。
if [ 条件 ]; then
コマンド1
コマンド2
...
fi
[ 条件 ]
の部分で指定された条件が真であれば、then
の直後に続くコマンドが実行されます。fi
は「if」の終わりを示します。
シンプルな「if」ステートメントの例
例えば、あるファイルが存在するかどうかをチェックする簡単なスクリプトは次の通りです。
#!/bin/bash
filename="example.txt"
if [ -e "$filename" ]; then
echo "File $filename exists."
else
echo "File $filename does not exist."
fi
ここでは、-e
オプションを使用してファイルの存在を確認しています。もしファイルが存在すればその名前を出力し、存在しなければその通知を行います。
複数条件の組み合わせ:「and」の使用
「and」条件を使うことで、複数の条件を組み合わせてより具体的な条件分岐を行うことができます。Bashでの「and」は、条件を二つの中括弧内に挟んで記述するスタイルが一般的です。
if [ 条件1 ] && [ 条件2 ]; then
コマンド1
コマンド2
...
fi
複数条件を指定した例
次に、ファイルが存在し、かつ読み取り可能であるかをチェックするスクリプトを示します。
#!/bin/bash
filename="example.txt"
if [ -e "$filename" ] && [ -r "$filename" ]; then
echo "File $filename exists and is readable."
else
echo "File $filename does not exist or is not readable."
fi
ここで、-r
オプションはファイルが読み取り可能であるかを確認します。二つの条件を結合して、「ファイルが存在する」かつ「読み取り可能である」という条件を満たす場合のみ、真のブロックが実行されます。
条件の応用:数値の比較
ファイル操作だけでなく、数値の比較でも「if」構文は応用できます。以下に、二つの変数の値を比較する例を示します。
#!/bin/bash
num1=10
num2=20
if [ "$num1" -eq "$num2" ]; then
echo "Numbers are equal."
else
echo "Numbers are not equal."
fi
この例では-eq
を使用して、二つの数値が等しいかどうかをチェックしています。また、数値が非等の場合やその他の条件も指定できます。
実用的な例:ディスク容量の確認
実際のBashスクリプトでは、条件を組み合わせてより複雑な要件を処理します。その一つの例として、ディスク容量があるしきい値を超えた場合に警告を表示するスクリプトを見てみましょう。
#!/bin/bash
threshold=80
current_usage=$(df / | grep / | awk '{ print $5 }' | sed 's/%//g')
if [ "$current_usage" -ge "$threshold" ]; then
echo "Warning: Disk space usage is over $threshold%!"
fi
このスクリプトは、df
コマンドを使ってルートファイルシステムのディスク使用率をチェックし、その値が80%を超えている場合に警告を出します。-ge
は「greater than or equal to(以上)」を意味します。
結論
Bashスクリプトでの「if」と「and」を組み合わせた条件分岐は、スクリプトの柔軟性を大幅に向上させる強力な手段です。ファイルの存在チェックや数値の比較、さらにはディスク容量の管理まで、多岐にわたるタスクを効率的に処理できます。条件分岐を適切に活用することにより、日々のシステム管理や自動化作業をより効果的に行えるでしょう。ぜひ、実際のプロジェクトでこれらのテクニックを活用してみてください。
コメント