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

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
このブログが役に立ったら
「いいね!」お願いします

サイト内検索

最近のエントリー

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

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

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

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

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

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

Nintendo Switch 初期不良による問い合わせから修理までの流れ

Windows 10 起動時に Chrome が勝手に起動する原因は?急に起動するようになったのは OS の仕様変更によるもの

JavaScript の数値チェックに isNaN を使ってはいけない理由

Nintendo Switch のセーブデータを保持したまま本体を初期化する!本体の調子が悪い時の対処法の1つです!