シェルスクリプトでは、単にコマンドを実行するだけではなく、条件によって処理を変えたり、繰り返し処理を行ったり、また、通常のコマンドのように引数を受け取って、引数に応じた処理を行ったりすることができます。今回は、シェルスクリプトで「変数」を扱う方法について解説します。
「変数」の扱い方はコマンドラインと同じです。シェルスクリプトの中で新しく変数を使いたい場合は、「変数名=値」のように指定します。「=」記号の前後に空白を入れることはできません。
定義した変数の値は「$変数名」で参照できます。既存の環境変数やシェル変数も同じように参照します。
#! /bin/bash STR="abc" echo "$STR"
$ chmod +x vartest $ ./vartest abc ← 変数「STR」の内容が表示された
「変数名=`コマンド`」で、コマンドの実行結果を変数に保存することができます。以下のサンプルスクリプトでは、「date」コマンドを使って、変数「TODAY」に今日の日付を8桁の数字で保存しています。
#! /bin/bash TODAY="`date +%Y%m%d`" echo "$TODAY"
$ chmod +x setTODAY $ ./setTODAY 20181003 ← 変数「TODAY」の内容が表示された
シェルスクリプトは、「#!」行の指定に従い、bashが別途起動して実行しています。従って、シェルスクリプトの中で定義した変数は、シェルスクリプトの中だけで使用できます。
実行後も参照したい場合は、「source」コマンドを使って、シェルスクリプトを“現在動作している”bashに読み込ませる必要があります。
$ ./setTODAY ← setTODAYを実行する(bashが別途起動して実行している) 20181003 ← 変数「TODAY」の内容が表示された $ echo "$TODAY" ← 変数「TODAY」の内容を確認 ← 何も表示されない
$ source setTODAY ← sourceコマンドで現在のシェルにsetTODAYを読み込ませる 20181003 ← 変数TODAYの内容が表示された $ echo "$TODAY" ← 変数TODAYの内容を確認 20181003 ← 変数TODAYの内容が表示された
なお、「変数名=値」でセットした変数は、シェル変数となります。シェル以外からも参照したい場合は、「export」コマンドで環境変数にします。exportする場合も、シェルスクリプト終了後も使用するにはsourceコマンドによる操作が必要です。
Copyright © ITmedia, Inc. All Rights Reserved.