Categories: linux

【LPIC-1対策】シェルとシェルスクリプトを基礎から解説!bashの基本・変数・制御構文・スクリプト作成まで

LPIC-1はLinux技術者としての登竜門とも言える資格であり、その中でも「シェルとシェルスクリプト」は重要な出題分野の一つです。シェルは単なるコマンド入力のインターフェースにとどまらず、日常的な作業を自動化するための強力なスクリプト言語でもあります。特にbash(Bourne Again Shell)は多くのLinux環境で標準として使用されており、変数、条件分岐、ループ処理など、基本的な構文を理解することは試験対策だけでなく、実務でも大いに役立ちます。この記事では、LPIC-1試験の対策として、bashの基本からスクリプトの書き方まで、初心者にもわかりやすく解説します。


bashとは?シェルの基本を押さえよう

シェルとは、ユーザーがLinuxと対話するための「窓口」であり、コマンドを入力することでOSに指示を出します。その中でも**bash(Bourne Again SHell)**は、最も一般的に利用されているシェルで、多くのディストリビューションでデフォルト設定になっています。

bashでは以下のような特徴があります:

  • 入力したコマンドを順番に処理するインタプリタ型
  • 変数の利用が可能
  • 条件分岐や繰り返しなどの制御構文が使用できる
  • スクリプトファイルとして処理を自動化できる

これらの特性により、bashは単なる「コマンド入力」ツールではなく、簡易的なプログラミング環境として活用されるのです。


シェルスクリプトの基本構造を理解する

シェルスクリプトとは、複数のコマンドをファイルにまとめ、1つのプログラムとして実行できるようにしたものです。基本的な構造は以下の通りです。

#!/bin/bash
# この行はシバンと呼ばれ、bashで実行することを指定しています

echo "Hello, world!"

このように、#!/bin/bashから始まるファイルを作成し、実行権限を与えることで、コマンドを自動化するスクリプトとして動作させることができます。

chmod +x myscript.sh
./myscript.sh

シェルスクリプトは、日々の作業の効率化に欠かせないツールです。


変数の使い方と注意点

シェルスクリプトでの変数は、値を一時的に保存し、後の処理に使うために活用されます。変数の定義方法は以下の通りです。

name="Taro"
echo "Hello, $name"

ポイントとしては、以下を覚えておきましょう:

  • =の前後にスペースを入れない
  • 変数の値を参照する際には$を付ける
  • 文字列の中で変数を使う場合はダブルクォーテーションで囲む

数値の計算には$(( ))構文を使います。

a=5
b=3
sum=$((a + b))
echo "合計は $sum"

変数の使い方をマスターすることは、スクリプトを柔軟に制御するために欠かせません。


ユーザーからの入力を受け取る

スクリプトを動的に動かしたい場合、ユーザーからの入力を受け付けることが重要です。readコマンドを使うことで実現できます。

echo "あなたの名前は?"
read username
echo "こんにちは、$usernameさん!"

このように、readコマンドは対話的なスクリプトに活用されます。


条件分岐(if文)の基本

シェルスクリプトでは、条件に応じて処理を分岐させるif文がよく使われます。

if [ $a -gt $b ]; then
echo "aはbより大きい"
else
echo "aはb以下"
fi

条件式には以下のような比較演算子が使えます:

  • -eq 等しい
  • -ne 等しくない
  • -gt より大きい
  • -lt より小さい
  • -ge 以上
  • -le 以下

また、文字列の比較では=!=が使えます。

if [ "$name" = "Taro" ]; then
echo "こんにちは、Taroさん"
fi

繰り返し処理(for, while)の使い方

for文

リストに対して処理を繰り返すには、for文を使います。

for i in 1 2 3 4 5; do
echo "数字は $i"
done

ファイルやディレクトリに対しても同様に使えます。

for file in *.txt; do
echo "$file を処理中..."
done

while文

条件を満たす限り繰り返す処理はwhile文を使います。

count=1
while [ $count -le 5 ]; do
echo "回数: $count"
count=$((count + 1))
done

ループの中でbreakcontinueを使うことで、制御をより柔軟にできます。


実践:シェルスクリプトで自動バックアップを作ろう

ここまでの知識を活かして、簡単なバックアップスクリプトを作ってみましょう。

#!/bin/bash

backup_dir="/home/user/backup"
source_dir="/home/user/documents"
date=$(date +%Y%m%d_%H%M%S)
filename="backup_$date.tar.gz"

mkdir -p "$backup_dir"
tar -czf "$backup_dir/$filename" "$source_dir"

echo "バックアップが完了しました: $filename"

このスクリプトでは以下の処理をしています:

  1. バックアップ先ディレクトリを作成
  2. 現在日時をファイル名に使う
  3. tarで圧縮して保存
  4. 完了メッセージを表示

定期実行(cron)と組み合わせれば、業務の自動化にも応用できます。


スクリプトのデバッグ方法

スクリプトが思うように動かないときは、デバッグが必要です。以下の方法が役立ちます。

1. set -xを使う

スクリプトに以下を追加すると、実行されるコマンドが逐一表示されます。

set -x

2. echoで変数を確認

変数の中身を逐一echoして、どこで期待と違う動きをしているか確認しましょう。

echo "変数xの値は: $x"

3. bash -x script.shで実行

コマンドラインから直接デバッグ実行も可能です。

bash -x myscript.sh

まとめ:試験対策と実務スキルの両立を目指して

シェルスクリプトは、単なる試験対策のためだけではなく、日々の業務効率化にも直結するスキルです。LPIC-1の範囲で問われるbashの基本、変数、条件分岐、繰り返し処理、スクリプト作成といった内容は、すべて実務にも活かせる実用的な知識ばかりです。

試験前には、実際にスクリプトを書いて、動かしてみることが一番の対策になります。特に以下のポイントをしっかり復習しておきましょう:

  • #!/bin/bash の意味
  • 変数の扱い(代入・参照・計算)
  • 条件分岐(if文)の構文と演算子
  • ループ(for, while)の使い方
  • スクリプトの作成・実行・デバッグ

これらを押さえておけば、LPIC-1の試験対策は万全です。ぜひ、自分の手を動かして習得していきましょう!

upandup

Web制作の記事を中心に、暮らし、ビジネスに役立つ情報を発信します。 アフィリエイトにも参加しています。よろしくお願いいたします。