Bashスクリプト入門:構文、変数、コマンド
1. Bashスクリプトってなに?
もし「同じコマンドを何回も繰り返さなきゃいけないのはなんでだろう?」って思ったことがあるなら、おめでとう!Bashスクリプトの準備ができてるよ!Bashスクリプトは、Linuxでの作業を自動化する手段で、一連のコマンドを1つのファイルに書き込むんだ。Bash (Bourne Again Shell) は単なるシェルじゃなくて、管理者、プログラマー、そしてシステムを自分のために働かせたいすべての人のためのスイスナイフだよ。
Bashスクリプトの利点
- 時間の節約: 一度書けば八回実行できる。
- タスクの再現性: スクリプトを実行するたびに同じように動作する(ちゃんと書けばね)。
- 日常作業の自動化: バックアップ、リソースモニタリング、ファイル管理用のカスタムコマンドを作成しよう。
2. スクリプト作成の基礎
それでは始めましょう。Bashスクリプトはコマンドのセットが記述されたただのテキストファイルだよ。でもLinuxにこれがスクリプトであって、日記のランダムな記述じゃないと理解させるには、特定のルールに従う必要があるんだ。
ステップ 1: ファイルの名前とフォーマット
Bashスクリプトは通常.sh
拡張子を持つ(ただし必須ではない)。例えば:
hello_world.sh
backup_script.sh
ステップ 2: 必須のヘッダー
すべてのbashスクリプトは次の行から始まるべきだよ:
#!/bin/bash
この行はシェバング (shebang)と呼ばれていて、このスクリプトを実行するには/bin/bash
インタープリタを使うようにシステムに指示するんだ。これがない場合、システムはスクリプトを見て、ぼんやりため息をついて何もしてくれないよ。
ステップ 3: シンプルなスクリプト
テキスト "こんにちは、世界!" を表示するスクリプトを作成して実行しよう。結局のところ、やらない理由はないよね?
ファイルを作成する:
nano hello_world.sh
次の行を追加する:
#!/bin/bash echo "こんにちは、世界!"
ファイルを実行可能にする:
chmod +x hello_world.sh
スクリプトを実行する:
./hello_world.sh
画面に次のように表示されるよ:
こんにちは、世界!
3. 変数の使い方
変数はスクリプト内でデータを保存するもので、スクリプトを柔軟で使いやすくする。
変数の作成
変数を宣言するには、次の形式を使用しよう:
VARIABLE_NAME="値"
例:
NAME="Linux"
echo "ようこそ $NAME へ!"
出力:
ようこそ Linux へ!
注意: 変数名と =
の間にスペースを入れてはいけない。スペースを入れると、bashは何かおかしなことをしていると考え、エラーが発生する。
組み込み変数
Bashにはいくつかのあらかじめ定義された変数がある、例えば:
$USER
— 現在のユーザー。$HOME
— ホームディレクトリ。$PWD
— 現在の作業ディレクトリ。
次のスクリプトを試してみよう:
#!/bin/bash
echo "こんにちは, $USER!"
echo "あなたのホームディレクトリ: $HOME"
echo "あなたは今ここで作業しています: $PWD"
4. ユーザーからデータを取得する
時々スクリプトは動作するためにユーザーからデータを取得する必要があります。そのためにはread
コマンドを使います。
例:
#!/bin/bash
echo "お名前は?"
read NAME
echo "こんにちは、$NAME!"
スクリプトを実行すると、自分の名前を入力することができ、スクリプトが個人的に挨拶してくれます。
5. スクリプト内でのコマンド利用
Bashでは、まるでターミナルに打ち込むようにコマンドを実行できるよ。
例えばね:
#!/bin/bash
echo "現在の日付と時間:"
date
date
コマンドは現在の時間と日付を表示するんだ。例えば:
現在の日付と時間:
Mon Oct 30 12:34:56 UTC 2023
コマンド結果を変数に保存する
$()
を使ってコマンドの出力結果を変数に保存できるよ。それによってデータをさらに処理するのが便利になる。
例:
#!/bin/bash
CURRENT_DATE=$(date)
echo "現在時刻: $CURRENT_DATE"
6. スクリプトのコメント
何を書いたのか1ヶ月後に理解するために、必ずコメントを追加しよう。コメントには#
記号を使う:
#!/bin/bash
# これは挨拶のスクリプトです
echo "Bashの世界へようこそ!"
コメントはインタープリタによって無視され、実行には影響を与えません。
7. 例
次に、ファイルが存在するかどうか確認するスクリプトを書いてみよう。
ファイルを作成する:
nano file_checker.sh
コードを追加する:
#!/bin/bash # ファイル名の入力をリクエスト echo "ファイル名を入力してください:" read FILE_NAME # ファイルが存在するかを確認 if [ -f "$FILE_NAME" ]; then echo "ファイル $FILE_NAME は存在します。" else echo "ファイル $FILE_NAME は見つかりませんでした。" fi
ファイルを実行可能にして、実行する:
chmod +x file_checker.sh ./file_checker.sh
スクリプトの実行例:
ファイル名を入力してください: test.txt ファイル test.txt は存在します。
8. よくあるミス
Bashスクリプトを扱うときは楽しさだけでなく、時には頭を悩ませることもあります。以下はいくつかの一般的なミスです:
シバンの記述忘れ。
#!/bin/bash
の行がないと、スクリプトが別のインタプリタで実行されようとする可能性があり、それがエラーを引き起こします。未宣言の変数。
変数名でタイプミスをすると、bashはそれを空の値として扱います。スクリプトの最初にset -u
を使い、厳格なチェックモードを有効にしてください。=
の周りのスペース。
次のように書かないでください:VARIABLE = "value"
。これはエラーの原因になります。実行権限の問題。
スクリプトに実行権限がない場合は、chmod +x
を使用して追加してください。
実践課題
以下のスクリプトを書いてみてください:
- ユーザー名をリクエストする。
- 挨拶のフレーズを表示する。
- 現在の日付と時刻を表示する。
以下のスクリプトを書いてみてください:
- ユーザーからファイル名をリクエストする。
- ファイルが存在しない場合は作成し、存在する場合はその旨を通知する。
これでBashスクリプトの基本を理解できましたね!次の講義では条件分岐とループの追加方法を学びます。それでは、世界を自動化する旅を始めましょう!
GO TO FULL VERSION