第4回 シェルスクリプトの変数:代入のルールと$での参照方法

* 当サイトでは、コンテンツの一部に広告を掲載しています。

System Note $ cat /proc/ai-disclosure

本記事の構成および論理分析には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 Taro

3. 変数の値を書き換えてみる

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"

namecity の値を変更して、表示結果がどう変わるかを確認してください。

この回で理解しておくこと

  • 変数は値を名前付きで保存するための仕組みである
  • name="Taro" のように書いて値を代入する
  • 変数代入では = の前後に空白を入れない
  • $name の形で変数の値を取り出せる
  • echo と組み合わせると内容を確認しやすい
  • 変数を使うと同じ値を繰り返し利用しやすくなる

まとめ

今回は、変数を使って文字列を保存し、$name の形で値を取り出す方法を確認しました。

シェルスクリプトでは、値を直接何度も書くのではなく、変数に入れて使う場面が多くあります。

次回は、文字列とクォートの違いを確認しながら、文字列の扱い方をより正確に学びます。

次回予告

次回は「文字列とクォートを理解しよう」です。

シングルクォートとダブルクォートの違い、変数展開との関係を確認します。

よかったらシェアしてね!
  • URLをコピーしました!
  • URLをコピーしました!

この記事を書いた人

のいのアバター のい UNIX Cafe マスター

Macintosh Color Classicから始まった旅は、長いWindows時代を経て、Windows10のサポート終了をきっかけにUNIXの世界へ戻ってきました。UNIX Cafeでは、UNIX・Linux・そしてMacな世界を、むずかしい言葉を使わず、物語のように書いています。プログラミングは、アイデアをコンピューターに伝えるための言葉です。簡単な単語と文法を覚えれば、誰でもコマンドを使えます。ぜひ一度、やさしいプログラミングの世界をのぞいてみてください。

Created by UNIX Cafe

目次