IT・技術研修ならCTC教育サービス

サイト内検索 企業情報 サイトマップ

研修コース検索

コラム

WSLで始めるUbuntu

CTC 教育サービス

 [IT研修]注目キーワード   Python  UiPath(RPA)  最新技術動向  Microsoft Azure  Docker  Kubernetes 

第9回 シェル変数について知ろう (宮崎悟) 2019年6月

前回は、findとxargsを組み合わせた方法をについて説明しました。 今回は、シェルを使う際にかならず使うと言っていい、シェル変数について説明しようと思います。

シェル変数とは

シェル変数とはシェルが持っている機能の一つです。変数名で示されるシェル変数に値を代入したり、代入した値を表示することが出来ます。以下の例では、「AAA」が変数名、「aaa」がシェル変数に格納された値となります。

$ AAA=aaa

シェル変数に格納された値を表示、使用するためには「$変数名」や「${変数名}」のようにする必要があります。以下では、シェル変数AAAへ格納された値をechoで標準出力に出力しています。

$ echo $AAA
aaa
$ echo ${ABC}abc
aaaabc

このように、シェル変数をコマンドの引数に使用することが出来ます。シェル変数に続けて文字列を使用するような場合、「${変数名}」の形式を使いましょう。 気をつけなければいけないのは、空白や特殊な文字列を含む場合です。その場合、「''」や「""」で括ること設定が可能です。

$ BBB=' abc def'
$ CCC=" abc def"
$ echo $BBB$CCC
abc def abc def

では、「''」と「""」で括る場合の違いは何でしょうか? それは、シェル変数を展開できるかの違いです。

$ BBB=' abc $AAA'
$ CCC=" abc $AAA"
$ echo $BBB$CCC
abc $AAA abc aaa

上記の場合、シェル変数「BBB」には「abc $AAA」という値が入り、「CCC」には「abc aaa」という値が格納されます。「""」では中に含まれる変数が展開して格納されます。

シェル変数で使用できる文字

シェル変数には、大文字小文字のアルファベット、数字、「_」(アンダースコア)が使用可能です。ただし、数字で始まる変数名は使用できません。また、後ほど説明する予約済みの変数もあるので注意が必要です。

シェル変数の削除

以下のように AAA=とした場合、変数AAAに空値が入ることになり、変数自体を削除したことになりません。

$ AAA=
$ set|grep AAA
AAA=
BBB=' abc $AAA'

setコマンド単独で使用すると、設定済みのシェル変数・シェル関数(後日、説明します)が表示されますが、AAA自体は設定されていないことが分かります。unset を使用するとシェル変数を削除することが出来ます。

$ unset AAA=
$ set | grep AAA
BBB=' abc $AAA'
特殊パラメータ

bashには、以下のような特殊パラメータがあります。この特殊パラメータには値を代入することが出来ないため、シェル変数とは異なります。$特殊文字で以下の項目が展開されます。

文字 説明
0 シェルまたはシェルスクリプトの名前
1以上の数値 コマンドの引数の数字番目の文字列(位置パラメータという)<br />2桁以上の数値を展開するには${10}のように使用
* 1以上のすべての位置パラメータ<br />「"$*"」としたときは、"$1c$2c$3"のように展開される(cはIFS文字)
1以上のすべての位置パラメータ<br />「"$@"」としたときは、"$1" "$2" "$3"のように展開される
# 位置パラメータの数(=引数の数)を10進数で展開する
? 最後に実行されたコマンドの終了ステータス
-(ハイフン) 最後のオプションフラグ(-で始まる文字列)
$ 実行シェルのプロセスID
! 最後に実行されたバックグラウンドプロセスのプロセスID
_(アンダースコア) 実行するシェルまたはシェルスクリプトの絶対パス名

プロセスIDは、実行中のコマンド(=プロセス)に紐づくIDで、OS内で一意な数字です。プロセスIDの詳細は、バックグラウンドプロセス、シェルスクリプト含め、後日説明します。

予約済みシェル変数

bashは幾つかのシェル変数を独自に使用しています。以下、一部を紹介します。

シェル変数 説明
BASH 現在実行しているbashを起動する時に使われた完全なファイル名
BASHPID 現在のbashのプロセスID
BASH_VERSION 現在実行しているbashのバージョン
HOME ユーザのホームディレクトリ
HOSTNAME ホスト名
HOSTTYPE bash を実行するマシンの種類(x86_64など)
IFS 内部フィールドの区切り文字(デフォルトは空白「 」)
PATH コマンドの検索PATH<br />ディレクトリ名を「:」で区切って列記する<br />bashは、このディレクトリ内からコマンドを検索し、実行できる
PWD 現在の作業ディレクトリ
SHELL シェルのフルパス
UID ユーサID

その他にも定義済みのシェル変数がありますが、これらについては次回紹介したいと思います。 次回をお楽しみにお待ち下さい。

 


 

 [IT研修]注目キーワード   Python  UiPath(RPA)  最新技術動向  Microsoft Azure  Docker  Kubernetes