シェルにおけるシングルクォート、ダブルクォート、バッククォートで囲った場合の挙動の違い

2013/01/22

Linux等のシェルスクリプトにおいて、変数を各クォートで囲った場合、それぞれ異なる処理となります。

記号名称動作
シングルクォート囲った中身を文字列として出力
ダブルクォート囲った変数の中身を文字列として出力
`バッククォート
(アンサングラーブ)
囲った変数の中身をコマンドとして処理し、その結果を出力

シングルクォートは Shift + 7、バッククォートは Shift + @ で入力できます。それぞれ似ていますが、よく見ると違いがわかります。既に出来合いのソースコードを読む際は、特に注意が必要ですね。

具体的な動きは以下の通りです。
変数「A」に文字列「ls」を設定した場合の動きを例に挙げます。

[TESTSRV1-root-S/5] ls
bin  src  hello.c  hello.o  makefile
[TESTSRV1-root-S/5] A="ls"
[TESTSRV1-root-S/5] echo $A
ls
[TESTSRV1-root-S/5] echo '$A'
$A
[TESTSRV1-root-S/5] echo "$A"
ls
[TESTSRV1-root-S/5] echo `$A`  
bin src hello.c hello.o makefile
[TESTSRV1-root-S/5]

何も囲まなかった場合と、ダブルクォートで囲った場合は、同じ動きとなります。(処理に応じて囲む必要があります。)シングルクォートで囲った場合は「$A」そのものの文字列として取り扱われます。そしてバッククォートで囲った場合は、変数値「ls」をコマンドとして発行し、その処理結果がアウトプットとなります。

もしバッククォートで囲って、その変数値がコマンドでない場合、シェルのエラーとなってしまうので注意してください。

最新の更新情報は、Twitter、Facebook、Freedly にてお届け!

NJ-CLUCKER RSS

このブログの運営者

NJ

気力・体力勝負なシステム業界のエンジニアを経て、個人事業主として独立。Web サイト運営、動画制作など活動の場を広げています。

このブログでは、困ってたどり着いた人に、分かりやすく答えを提供できるように心掛けています。更新情報は、Twitter や Facebook ページを参照ください。フォローお待ちしています。

Facebook ページ NJ-CLUCKER
このブログが役に立ったら
「いいね!」お願いします

サイト内検索

最近のエントリー

どうぶつの森ポケットキャンプでフレンドを登録する方法は3つ!フレンドコードを表示して友達に教えてあげよう!

どうぶつの森ポケットキャンプで名前を変える方法は?性別は変更できない?

どうぶつの森ポケットキャンプのゴロゴロ鉱山ってどんなところ?ベルはどれくらい手に入る?

どうぶつの森ポケットキャンプのデータ移行方法!スマホを機種変更する場合はどうすれば良い?

どうぶつの森ポケットキャンプのダウンロード方法とインストール手順【初期設定】

どうぶつの森ポケットキャンプの配信開始も通信エラーが頻発!原因はアクセス過多か?!

WordPress でプラグインを利用せずメールフォームを自作!画面遷移せず非同期処理で実装

安室奈美恵 Finally 再録曲は完コピを超えた!もはやベストアルバムではなくニューアルバムだ!

iTunes で再生回数や最後に再生した日が更新されない場合の対処法

AbemaTV(アベマTV)をテレビ画面で見る方法!基本的にネット環境は必須!