前回までのシェルスクリプトはechoコマンドで文字列を出力するのみでしたが、シェルのスクリプトなので、当然、OSコマンドも実行できます。今回はOSコマンドを使用したシェルスクリプトを作成します。

まず、以下のファイルを作成します。

$ vi sample04.sh
echo "Hello. I am `whoami`."

作成したファイルに実行権を与えて、シェルスクリプトを実行します。

$ chmod u+x sample04.sh
$ ./sample04.sh

実行結果

Hello. I am root.

whoamiコマンドは現在のユーザー名を表示します。実行すれば、ユーザー名が表示されます。サンプルでは、このコマンドが`(バッククォート)に囲まれて文字列の中に書かれています。

`(バッククォート)で囲んだ場合、その囲まれた中の文字列をコマンドとみなし、その実行結果の文字列で置き換えられます。

よって、作成したシェルスクリプトをrootユーザーで実行した場合、echoコマンドで表示される文字列は、
  Hello. I am root.
と、なります。

このように、通常とは別の役割を持つ記号を特殊記号と言います。特殊記号には、他に以下のようなものがあります。

“(ダブルクォート)
「”」で囲まれた文字列の中の特殊記号を通常の文字として扱います。
ただし「`」や「$」「!」、シェル変数には効果がありません。

$ echo "`date`"
(dataコマンドの実行結果が表示される)

‘(クォート)
「’」で囲まれた文字列の中の特殊記号をすべて通常の文字として扱います。

$ echo '`date`'
`date`

\(バックスラッシュ)
「\」(バックスラッシュ)の次の1文字を通常の文字として扱います。
「\」キーで入力します。
補足:日本語環境の場合、バックスラッシュのかわりに円マーク(¥)が表示されます。

`(バッククォート)
「`」で囲まれた部分をコマンドとして実行し、結果で置き換えます。
$ echo `data`
(dataコマンドの実行結果が表示される)