本文へスキップ
BecomeCoder

シェルスクリプトコース · 第2章 変数とクォート · レッスン5

変数 ― 値に名前をつけて使い回す

ブラウザで完結

導入

バックアップ先のディレクトリ」を10か所に直書きしたスクリプトは、引っ越しのときに10か所直すことになります。1か所でも直し漏れれば壊れます。変数は、この「直し漏れ」を構造的に防ぐ道具です。

説明

変数は 名前=値 で作り、$名前 で取り出します。

#!/bin/bash

# 設定(変えたくなったらここだけ直す)
BACKUP_DIR=/home/user/backup
TARGET=logs/app.log

echo "対象: $TARGET"
echo "保存先: $BACKUP_DIR"
echo "コピー先のフルパス: $BACKUP_DIR/app.log"

シェルの変数には、他の言語にない約束事が3つあります。

  1. = の前後にスペースを入れないNAME = 値 はエラーになります(シェルは NAME というコマンドを探しに行きます)。
  2. 型がない。数値も文字列も、すべて文字列として持ちます。
  3. 取り出すときだけ $ を付ける。作るときは付けません。

名前の切れ目をはっきりさせたいときは ${名前} と波括弧で囲みます。直後に文字が続く場面で必須です。

name=report
echo $name.csv
echo ${name}_2026.csv

慣習として、設定用の変数は大文字BACKUP_DIR)、その場限りの作業変数は小文字i, line)で書き分けます。読む人が「これは設定だな」と一目で分かるようになります。

export 名前=値 とすると 環境変数 になり、そのスクリプトから呼び出した別のコマンドにも渡ります。PATHHOME が代表例です。パスワードやAPIキーは、スクリプトに直書きせず環境変数で渡すのが安全な作法です。

やってみよう

上のスクリプトを実行して、変数が展開される様子を見てください。次に BACKUP_DIR の値を /home/user/old-backup に書き換えて、もう一度実行。1か所直すだけで、出力の2か所が同時に変わることを確かめましょう。これが変数の価値です。

演習

スクリプトに USER_NAME=太郎 という変数を作り、echo "ようこそ、$USER_NAME さん" で画面に出してください。

ヒント1を見る

変数は 名前=値= の前後にスペースは入れません。

ヒント2を見る

USER_NAME=太郎 の次の行に echo "ようこそ、$USER_NAME さん"

実際に動かしてみよう

本文のサンプルや演習のコードは、コードブロック右上の「コピー」ボタンでコピーして、下のエディタに貼り付ければそのまま実行できます。

シェルスクリプト(シミュレート)

スクリプトを書くエディタと、それを動かす仮想シェルを読み込みます(本物のbashではなく、動きを再現した学習用の環境です)。
スクロールして表示された時点でも自動で読み込まれます。