変数へ値を代入する
変数名は英字、数字、アンダースコアを使い、代入時の左辺に$を付けません。参照するときに$nameと書きます。
変数の基本BASH
name='Mity'
count=3
count=$((count + 2))
printf '%sさんの回数: %s\n' "$name" "$count"実行結果OUTPUT
Mityさんの回数: 5数値計算には$((...))を使います。count = 3のように=の周りへ空白を入れると、代入ではなくコマンドとして解釈されるので注意します。
引用符で値を守る
ダブルクォートの中では変数が展開され、シングルクォートの中では展開されません。パスやユーザー入力の変数は、原則ダブルクォートで囲みます。
空白を含むパスBASH
file='daily report.txt'
printf 'ファイル名: %s\n' "$file"
touch "$file"
ls -l "$file"表示例OUTPUT
ファイル名: daily report.txt
-rw-r--r-- 1 mity mity 0 ... daily report.txtls $fileと書くと空白で2つの引数に分かれ、意図と違う結果になります。引用符を付けることは、シェルスクリプトの基本的な安全策です。
コマンド置換
コマンドの実行結果を変数へ入れるには$(...)を使います。結果の前後にある改行は扱いが変わるため、表示や比較では内容を確認します。
日付とファイル数BASH
today=$(date '+%Y-%m-%d')
file_count=$(find . -maxdepth 1 -type f | wc -l)
printf '%s のファイル数: %s\n' "$today" "$file_count"実行結果の例OUTPUT
2026-10-09 のファイル数: 3日付やファイル数は実行環境によって変わります。サンプルと数字が違っても、計算の意味が合っているかを確認します。
readで入力を受け取る
readは、利用者の入力を変数へ保存します。入力を表示するときは、入力値をそのままコマンドとして実行しないようにします。
名前を受け取るBASH
read -r -p '名前を入力してください: ' name
printf 'こんにちは、%sさん。\n' "$name"実行例OUTPUT
名前を入力してください: Mity
こんにちは、Mityさん。-rはバックスラッシュを特別扱いしない指定です。パスワードなどの入力を画面へ表示したくない場合はread -r -sを使います。
終了ステータスを調べる
コマンドは終了時に数値を返し、成功は通常0、失敗は0以外です。直前の結果は$?で調べられます。
成功と失敗COMMAND
true
echo "$?"
false
echo "$?"実行結果OUTPUT
0
1実際には終了ステータスを直接保存するより、if command; then ... else ... fiの形で使うほうが読みやすくなります。
ファイルを確認するBASH
printf 'apple\n' > fruits.txt
if [[ -r 'fruits.txt' ]]; then
printf '読み込み可能です。\n'
else
printf '読み込めません。\n' >&2
fi実行結果OUTPUT
読み込み可能です。練習:入力を安全に表示する
名前と年齢を受け取り、次の形式で表示するスクリプトを作ってください。名前に空白が含まれても一つの値として扱います。
期待する実行例OUTPUT
名前を入力してください: 山田 太郎
年齢を入力してください: 20
山田 太郎さんは20歳です。解答例BASH
read -r -p '名前を入力してください: ' name
read -r -p '年齢を入力してください: ' age
printf '%sさんは%s歳です。\n' "$name" "$age"実行結果OUTPUT
山田 太郎さんは20歳です。次は条件分岐と繰り返しへ進み、入力値によって処理を切り替えます。