Shellの基礎知識(入門編)

【Shell入門】変数を使って計算しよう

シェルスクリプトでは、値を一時的に保存したり、再利用したりするために「変数」を使います。今回は、変数を定義して値を計算に使う基本的な方法を体験します。プログラミングらしさが一気に増すステップです!

Shellの基礎知識

Shellスクリプトにおける変数の基本

Shellスクリプトでも、他のプログラミング言語と同様に「変数」が使えます。変数とは、値を一時的に保存しておくための“入れ物”です。まずはこの基本的な考え方から確認してみましょう。

変数とは?値を一時的に保存する仕組み

変数とは、データを一時的に記憶する名前付きの箱のようなものです。名前をつけて値を保存しておくことで、あとからその値を参照したり変更したりできます。

ルーキー
つまり、同じ値を何回も書かなくていいってこと?
その通り!たとえば「5」という値を何度も使いたいときに変数に入れておけば、書き直さずに使い回せるよ。
ビープロ

この「再利用できる」というのが、変数を使う最大のメリットです。

変数を定義して使う基本構文

Shellでは、以下のような書き方で変数を定義します。ポイントは「= の前後にスペースを入れない」ことです。

price=500

そして、変数の中身を使いたいときは、先頭に $ をつけて参照します。

echo "金額は $price 円です"

ルーキー
あれ?「price」ってそのままじゃなくて「$price」なの?
うん!「$」をつけることで「この名前の変数の中身を使うよ」って意味になるんだ。これはShellのルールだから、必ず覚えておこう。
ビープロ

このように、変数を使えば決まった値をスクリプトの中で柔軟に使い回すことができます。次はこの変数を使って、簡単な計算に挑戦してみましょう。

</h2id="shell-entry-variable1">

実践:変数を使って計算してみよう

変数の基本がわかったら、次はその中に数値を入れて計算してみましょう。Shellでは、特別な書き方で数値計算ができるようになっています。

なお、ここからは「VSCodeでファイルに書いて保存→ターミナルで実行」というスタイルを紹介していますが、初心者の方はターミナルに直接入力してもOKです。少しずつ慣れていきましょう。

作成したら、WSLターミナルで以下のように実行します。

sh calc.sh

ルーキー
おっ、ついにファイルで動かす時が来た!?
その通り!ここから先は「書いたコードを保存して実行」が基本スタイルになるよ。いよいよプログラミングらしくなってきたね。
ビープロ

数値を変数に入れて足し算してみよう

まずは2つの数字を変数に入れて、足し算の結果を出力する例です。

num1=100
num2=200
sum=$((num1 + num2))
echo "合計は $sum 円です"

出力結果:

合計は 300 円です

ルーキー
うおっ、いきなりカッコがふたつ出てきた…!これは何?
いい質問!この $(( )) っていう書き方は「Shellで数値計算しますよ」っていう特別な構文なんだ。中に変数名や数式を入れて使うよ。
ビープロ

Shellでは、ただの =では計算はできません。 $(( )) を使うことで、ちゃんと計算してその結果を変数に代入できます。

VSCodeで実行した場合のイメージ

複数の変数を使って合計・平均を求める

次に、3つの数値を使って合計と平均を計算してみます。少し複雑になりますが、流れは同じです。

a=70
b=80
c=90
total=$((a + b + c))
average=$((total / 3))
echo "合計:$total 点"
echo "平均:$average 点"

出力結果:

合計:240 点
平均:80 点

ルーキー
おお!数字を組み合わせて計算っぽくなってきた!
でも「/」ってちゃんと割り算になるんだ?
うん、 $(( ))の中では普通の数学記号でOK。足し算(+)、引き算(-)、掛け算(*)、割り算(/)全部使えるよ。
ビープロ

VSCodeで実行した場合のイメージ

このように、複数の変数を組み合わせて計算することで、Shellスクリプトが一気に「プログラムらしく」なってきます。変数と計算は今後あらゆる場面で登場するので、ここでしっかり体験しておきましょう。

計算でつまずかないためのポイント

Shellでの計算は見慣れない書き方が多く、初心者がつまずきやすい部分でもあります。ここではエラーを防ぐために、最低限おさえておきたい注意点を解説します。

$(( )) の書き方と注意点

Shellでは、数値計算をするときに $(( )) という特殊な構文を使います。この中には、通常の四則演算(+ - * /)を書くことができます。

result=$((10 + 5))
echo $result

出力結果:

15

ルーキー
Shellって見た目が独特すぎて、これが本当に計算になるのか疑ってたよ…
わかる!でも $(( )) の中だけは「数学式を書いてOK」な特別エリアだと思っておくといいよ。
ビープロ

なお、次のようにスペースの入れ方を間違えるとエラーになることがあります。

result = $((10 + 5)) ← NG!

「=」の前後にはスペースを入れないのがShellのルールです。

クオーテーションとの相性とエラー対策

Shellでは文字列を扱うときにクオーテーション("や')を使いますが、 $(( )) の中では**クオーテーションを使ってはいけません**。

result=$(("10" + 5)) ← NG!

出力結果:

bash: 10 + 5: syntax error: invalid arithmetic operator

ルーキー
えっ、ダブルクオーテーションで囲んだだけで怒られるの?
そうなんだ。 $(( )) の中は「完全に数式だけを書く空間」って覚えておくと安心!文字っぽい見た目になるとエラーになるよ。
ビープロ

Shellでは構文が非常に厳格なので、「少しの記号ミス」で一発エラーになります。まずはよく使うパターンをコピペでもOKなので、手を動かして感覚をつかんでいきましょう。

変数をマスターして次のステップへ

変数の使い方と計算方法を理解できたら、Shellスクリプトの中でできることが一気に広がります。今後、条件分岐や繰り返し処理と組み合わせることで、より実践的な自動化が可能になります。

条件分岐やループでも変数は大活躍

変数は「値を保持する」という役割だけでなく、if文やfor文といった制御構文の中でも多用されます。たとえば、ある変数の値が特定の条件を満たすかどうかを判断したり、変数の値を使って繰り返し処理を制御したりと、あらゆる場面で活躍します。

ルーキー
なるほど…!ってことは、ここで変数の使い方に慣れておかないと後でつまずくんだな?
その通り!Shellのスクリプトでは、変数を理解しているかどうかが“次の理解スピード”に大きく関わってくるんだ。
ビープロ

このあとの章では、条件分岐とループ処理を通して、変数の活躍シーンを体験していきます。焦らず、一歩ずつ進んでいきましょう。

Shellの基礎知識で変数の仕組みを深堀りしたい方へ

「もっと変数の仕組みを詳しく知りたい」「特殊変数や高度な使い方も気になる」という方は、入門シリーズを終えたあとに下記の基礎記事もぜひ読んでみてください。

ルーキー
まだ全部は追いつけそうにないけど、気になるときに読めばいいって感じだね!
うん、今は「動かしながら体験して覚える」ことが一番大事だからね。基礎はあとからでもしっかり理解できるようになってるよ。
ビープロ

このまま入門シリーズを続けて、次は「条件分岐(if文)」に挑戦していきましょう!

▶ 続きはこちら:Shell入門:条件分岐(if文)で処理を分けよう

よく読まれている記事

1

IT入門シリーズ 🟢 STEP 1: ITの基礎を知る(ITとは何か?) 📌 IT初心者が最初に学ぶべき基本知識。ITの概念、ネットワーク、OS、クラウドの仕組みを学ぶ ...

2

「私たちが日々利用しているスマートフォンやインターネット、そしてスーパーコンピュータやクラウドサービス――これらの多くがLinuxの力で動いていることをご存じですか?無料で使えるだけでなく、高い柔軟性 ...

3

この記事は、Linuxについて勉強している初心者の方向けに「Shellスクリプト」について解説します。最後まで読んで頂けましたら、Shellスクリプトはどのような役割を担っているのか?を理解出来るよう ...

-Shellの基礎知識(入門編)