Linuxのバッククォート(10日坊主)
- この記事はsolo_advent_calender 2016年12月10日のものです。
こんにちは ショート advent calender10日目です。
本来は土曜日にあげるはずだったやつです。
これの続きで、 シングルクォート、ダブルクォートときたらバッククォートですよね
コマンドをバッククォート``
で囲むとコマンドの実行結果が展開される。コマンドの標準出力を変数に代入したりできます
$ 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
は知らないという感じですね。
実際にデータがどのように認識されているのかを調べる方法を調べよう