導入
同じ値を何度も打つのは面倒で、間違いのもとです。変数 を使えば、値に名前をつけて後から呼び出せます。シェルスクリプトで「設定を1か所にまとめる」ための土台であり、自動化の第一歩です。この延長には「パスワードを直書きせず環境変数で渡す」という現場の作法もあります(※サーバーコースで扱います)。
説明
変数は 名前=値 で作ります。= の前後にスペースを入れない のがシェルの約束事です。
greeting=こんにちは
作った変数は、名前の前に $ を付けて呼び出します(展開といいます)。
echo $greeting
echo $greeting 世界
名前の境目をはっきりさせたいときは ${名前} と波括弧で囲みます。直後に文字が続くときに便利です。
name=data
echo ${name}.csv
値にスペースを含めたいときは、クォートで囲みます。呼び出すときも "$変数" と囲んでおくと、スペースで分割されず安全です。
message="お疲れ様でした"
echo "$message"
変数はコマンドの引数としても使えます。「対象ファイルを変数にまとめておき、コマンドから参照する」のは定番です。
target=data.csv
grep 東京 $target
変数を子プロセス(別のコマンド)にも渡したいときは
export 名前=値とします。これを 環境変数 と呼び、PATHやHOMEなどが代表例です。パスワードや API キーは、コードに直書きせず環境変数で渡すのが安全な作法です。いらなくなった変数はunset 名前で消せます。
やってみよう
greeting=こんにちは で変数を作り、echo $greeting、echo $greeting 世界 で呼び出せることを確かめましょう。name=data → echo ${name}.csv で波括弧の使い方を、target=data.csv → grep 東京 $target で「変数をコマンドの引数に渡す」使い方を試してください。
演習
name という変数に world を代入してください。
ヒント1を見る
変数は 名前=値。= の前後にスペースは入れません。
ヒント2を見る
name=world(そのあと echo $name で確認できます)