連載
» 2018年10月03日 05時00分 公開

“応用力”をつけるためのLinux再入門(24):シェルスクリプトに挑戦しよう(4)変数の定義と参照 (1/2)

シェルスクリプトでは、単にコマンドを実行するだけではなく、条件によって処理を変えたり、繰り返し処理を行ったり、また、通常のコマンドのように引数を受け取って、引数に応じた処理を行ったりすることができます。今回は、シェルスクリプトで「変数」を扱う方法について解説します。

[西村めぐみ,@IT]
「“応用力”をつけるためのLinux再入門」のインデックス

“応用力”をつけるためのLinux再入門

変数の定義と参照

 「変数」の扱い方はコマンドラインと同じです。シェルスクリプトの中で新しく変数を使いたい場合は、「変数名=値」のように指定します。「=」記号の前後に空白を入れることはできません。

 定義した変数の値は「$変数名」で参照できます。既存の環境変数やシェル変数も同じように参照します。

#! /bin/bash
STR="abc"
echo "$STR"
▲変数を定義して表示する例(vartest)

$ chmod +x vartest
$ ./vartest
abc         ← 変数「STR」の内容が表示された
▲実行結果(vartest)

●コマンドの実行結果を変数に保存する

 「変数名=`コマンド`」で、コマンドの実行結果を変数に保存することができます。以下のサンプルスクリプトでは、「date」コマンドを使って、変数「TODAY」に今日の日付を8桁の数字で保存しています。

#! /bin/bash
TODAY="`date +%Y%m%d`"
echo "$TODAY"
▲dateコマンドの結果を変数「TODAY」に保存する(setTODAY)

$ chmod +x setTODAY
$ ./setTODAY
20181003     ← 変数「TODAY」の内容が表示された
▲実行結果(setTODAY)

●スクリプト実行後も変数を使用できるようにする

 シェルスクリプトは、「#!」行の指定に従い、bashが別途起動して実行しています。従って、シェルスクリプトの中で定義した変数は、シェルスクリプトの中だけで使用できます。

 実行後も参照したい場合は、「source」コマンドを使って、シェルスクリプトを“現在動作している”bashに読み込ませる必要があります。

$ ./setTODAY        ← setTODAYを実行する(bashが別途起動して実行している)
20181003            ← 変数「TODAY」の内容が表示された
$ echo "$TODAY"     ← 変数「TODAY」の内容を確認
                    ← 何も表示されない
▲スクリプトをそのまま実行した場合

$ source setTODAY   ← sourceコマンドで現在のシェルにsetTODAYを読み込ませる
20181003            ← 変数TODAYの内容が表示された
$ echo "$TODAY"     ← 変数TODAYの内容を確認
20181003            ← 変数TODAYの内容が表示された
▲sourceコマンドでスクリプトを実行した場合

 なお、「変数名=値」でセットした変数は、シェル変数となります。シェル以外からも参照したい場合は、「export」コマンド環境変数にします。exportする場合も、シェルスクリプト終了後も使用するにはsourceコマンドによる操作が必要です。

       1|2 次のページへ

Copyright © ITmedia, Inc. All Rights Reserved.

RSSについて

アイティメディアIDについて

メールマガジン登録

@ITのメールマガジンは、 もちろん、すべて無料です。ぜひメールマガジンをご購読ください。