As rookie

ルーキーインフラエンジニアがインフラのこと以外も結構書いてしまうブログ

Linuxのバッククォート(10日坊主)

  • この記事はsolo_advent_calender 2016年12月10日のものです。

こんにちは ショート advent calender10日目です。

本来は土曜日にあげるはずだったやつです。

mokicks.hatenablog.com

これの続きで、 シングルクォート、ダブルクォートときたらバッククォートですよね

コマンドをバッククォート`` で囲むとコマンドの実行結果が展開される。コマンドの標準出力を変数に代入したりできます

$ today=`date`

$ echo date #バッククォートで囲まないとただの文字列だと認識する
date

$ echo $today
2016年 12月 10日 土曜日 23:42:15 JST

$ hoge=neko

$ echo '$hoge' is "$hoge"
$hoge is neko

$ pure=`echo '$hoge' is "$hoge"` # 変数pureに` $hoge is neko` を代入

$ $pure
-bash: $hoge: コマンドが見つかりません #$pureには`$hoge is neko` が入っているので$hogeがコマンドとして入力される

$ echo $pure
hoge is neko
$ $pure

の部分で$hogeコマンドを実行しようとして、失敗しているが、

$ $hoge

を実行すると -bash: neko: コマンドが見つかりません

となります。普通に$hogeを呼び出すと変数hogeに入っているnekoが実行されるのに、なぜ$hoge コマンドを実行しようとしたのか。

echo でシングルクォートで囲って出力したものは、見かけ上では分からないが文字列ということになってそう

$ '$hoge'
-bash: $hoge: コマンドが見つかりません

という結果になる。変数の$hoge は知っているが、文字列の$hogeは知らないという感じですね。

実際にデータがどのように認識されているのかを調べる方法を調べよう