シェルスクリプトでブロックコメント

f:id:suganoo:20200124175452p:plain
シェルスクリプトでブロックコメントを作る方法を知ってますか?

ブロックコメントはpythonでいう"""(ダブルクオート3つ)や'''(シングルクオート3つ)で囲んだコメント、またjavaで言えば/*.....*/といったように書くコメントです。

1行コメントは # でコメントアウトすればいいですが、何十何百行にもわたる行をコメントアウトするにはどうしたらよいでしょうか。  

シェルスクリプトではブロックコメントとしての機能は無いようです。

ヒアドキュメントの機能を使ってブロックコメントとしているようです。

ヒアドキュメント

ヒアドキュメントとは何か?

スクリプトに書いたものを、標準出力として扱う機能です。

cat を例に下記のように実行すると、

cat << END
Hello
Hi
END
Hello
Hi

と出力されます。

ENDとENDで囲まれた内容が、スクリプトファイルに記述されているのに標準入力としてcat に渡され文字列が出力されているわけです。

ちなみにヒアドキュメントでは、<< (終了文字列).......(終了文字列) の形式で書けばよく、この(終了文字列)はENDでないとダメ、というわけではありません。

ブロックコメント

そこでシェルプログラミングではヒアドキュメントを利用してブロックコメントを記述します。

上記の例ではヒアドキュメントの入力の渡し先がcatコマンドでしたが、別に何もなくても構いません。

<< COMMENT
Hello
Hi
COMMENT

このように書けばCOMMENTで囲まれた内容がヒアドキュメントとして扱われ、かつ入力の渡し先が何もないのでなにもされない、つまりブロックコメントのような存在になってくれます。

ちょっと特殊なやりかたですね。