本文へスキップ
BecomeCoder

Linuxコマンドコース · 第6章 自動化とシェルスクリプト · レッスン32

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

ブラウザで完結

導入

同じ値を何度も打つのは面倒で、間違いのもとです。変数 を使えば、値に名前をつけて後から呼び出せます。シェルスクリプトで「設定を1か所にまとめる」ための土台であり、自動化の第一歩です。この延長には「パスワードを直書きせず環境変数で渡す」という現場の作法もあります(※サーバーコースで扱います)。

説明

変数は 名前=値 で作ります。= の前後にスペースを入れない のがシェルの約束事です。

greeting=こんにちは

作った変数は、名前の前に $ を付けて呼び出します(展開といいます)。

echo $greeting
echo $greeting 世界

名前の境目をはっきりさせたいときは ${名前} と波括弧で囲みます。直後に文字が続くときに便利です。

name=data
echo ${name}.csv

値にスペースを含めたいときは、クォートで囲みます。呼び出すときも "$変数" と囲んでおくと、スペースで分割されず安全です。

message="お疲れ様でした"
echo "$message"

変数はコマンドの引数としても使えます。「対象ファイルを変数にまとめておき、コマンドから参照する」のは定番です。

target=data.csv
grep 東京 $target

変数を子プロセス(別のコマンド)にも渡したいときは export 名前=値 とします。これを 環境変数 と呼び、PATHHOME などが代表例です。パスワードや API キーは、コードに直書きせず環境変数で渡すのが安全な作法です。いらなくなった変数は unset 名前 で消せます。

やってみよう

greeting=こんにちは で変数を作り、echo $greetingecho $greeting 世界 で呼び出せることを確かめましょう。name=dataecho ${name}.csv で波括弧の使い方を、target=data.csvgrep 東京 $target で「変数をコマンドの引数に渡す」使い方を試してください。

演習

name という変数に world を代入してください。

ヒント1を見る

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

ヒント2を見る

name=world(そのあと echo $name で確認できます)

実際に動かしてみよう

下の端末にコマンドを打って Enter を押すと、その場で結果が返ります。本文で出てきたコマンドを実際に試しながら進めましょう(ファイルを消しても「最初からやり直す」で元に戻ります)。

Linux シェル(シミュレート)

ブラウザ内でコマンドを試せる仮想シェルを読み込みます(本物のLinuxカーネルではなく学習用の再現です)。
スクロールして表示された時点でも自動で読み込まれます。