本記事の構成および論理分析にはAI(人工知能)を使用しています。情報の正確性は、システム管理者(UNIXユーザー)による手動検証済みです。
第4回 シェルスクリプトの変数:代入のルールと$での参照方法

はじめに
この連載では、macOS のターミナルで sh を使いながら、シェルスクリプトの基本を順番に学んでいきます。
第1回から第3回までは、ターミナルの基本操作から始まり、スクリプトの作成・実行、そして「シバン(#!/bin/sh)」やコメントといった、シェルスクリプトを書く上での「共通言語(プロトコル)」を確認してきました。これまでは「あらかじめ決まった文字をそのまま表示する」という、いわば静的な処理が中心でした。
第4回となる今回は、プログラミングにおいて最も重要な概念の一つである「変数(variable)」を学びます。
変数は、値を一時的に保存して、後から好きな時に取り出して再利用するための仕組みです。これを使えるようになると、同じ内容を何度も書き直す手間が省け、状況に応じて表示内容を変えるといった「柔軟な動き」が可能になります。あなたのスクリプトが一気に「プログラム」らしく進化する第一歩です。論理的な構造を組み立てる楽しさを、一緒に味わっていきましょう。
この回で学ぶこと
- 変数とは何か
name="Taro"の形で値を保存する方法=の前後に空白を入れない理由$nameで値を取り出す方法echoで変数の内容を表示する方法- 文字列を変数に入れて再利用する流れ
- 初学者が間違えやすい書き方
変数とは何か
値を名前付きで保存する
変数は、値を名前付きで保存するための仕組みです。
同じ文字列を何度も使いたいときに、変数へ入れておくと再利用しやすくなります。
たとえば、Taro という文字列を name という変数に入れるには、次のように書きます。
name="Taro"変数の値を取り出す
変数に入れた値を使うときは、変数名の前に $ を付けます。
echo $nameこれで、name に入っている値が表示されます。
サンプルコード
variable_sample.sh に次の内容を保存します。
#!/bin/sh
name="Taro"
echo $name
echo "My name is $name"実行手順
1. ファイルを作成して保存する
エディタで variable_sample.sh という名前のファイルを作成し、次の内容を保存します。
#!/bin/sh
name="Taro"
echo $name
echo "My name is $name"2. sh variable_sample.sh で実行する
次のコマンドを実行します。
sh variable_sample.sh実行結果は次のようになります。
Taro
My name is Taro3. 変数の値を書き換えてみる
name="Taro" を name="Hanako" に変更して、もう一度実行します。
#!/bin/sh
name="Hanako"
echo $name
echo "My name is $name"実行結果は次のようになります。
Hanako
My name is Hanakoコードの読み方
name=”Taro”
これは、name という変数に Taro を代入しています。
= の前後には空白を入れません。
echo $name
$name は、name に入っている値を取り出しています。
その結果、画面には Taro が表示されます。
echo “My name is $name”
文字列の中に $name を書くと、変数の値を文の中で使えます。
この例では、My name is Taro が表示されます。
= の前後に空白を入れない
変数代入では、次のように書きます。
name="Taro"次の書き方は正しくありません。
name = "Taro"シェルでは、空白によって単語の区切りが決まります。
そのため、name = "Taro" のように空白を入れると、変数代入として解釈されません。
初学者がつまずきやすい点
$ を付け忘れる
変数に入っている値を使うときは、$name のように $ を付けます。
echo name と書くと、文字列 name がそのまま表示されます。
代入時にも $ を付けてしまう
値を入れるときは、$name="Taro" とは書きません。
代入するときは name="Taro" です。
= の前後に空白を入れてしまう
name = "Taro" は正しく動きません。
変数代入では空白を入れずに書いてください。
よくあるエラー
command not found: name
name = "Taro" のように書いている可能性があります。
次のように修正してください。
name="Taro"変数の値が表示されない
変数名の前に $ を付け忘れている可能性があります。
echo $nameのように書いて確認してください。
思った文字列と違うものが表示される
変数へ代入した内容を見直してください。
name="Hanako" と書けば、表示される値も Hanako になります。
練習用コード
次の内容で profile.sh を作成して実行してみてください。
#!/bin/sh
name="Yamada"
city="Tokyo"
echo $name
echo $city
echo "$name lives in $city"name や city の値を変更して、表示結果がどう変わるかを確認してください。
この回で理解しておくこと
- 変数は値を名前付きで保存するための仕組みである
name="Taro"のように書いて値を代入する- 変数代入では
=の前後に空白を入れない $nameの形で変数の値を取り出せるechoと組み合わせると内容を確認しやすい- 変数を使うと同じ値を繰り返し利用しやすくなる
まとめ
今回は、変数を使って文字列を保存し、$name の形で値を取り出す方法を確認しました。
シェルスクリプトでは、値を直接何度も書くのではなく、変数に入れて使う場面が多くあります。
次回は、文字列とクォートの違いを確認しながら、文字列の扱い方をより正確に学びます。
次回予告
次回は「文字列とクォートを理解しよう」です。
シングルクォートとダブルクォートの違い、変数展開との関係を確認します。



