2009年06月28日

シェルスクリプトでブロックコメント -【追記】11/23

シェルスクリプトにはブロックコメントがない。
でも、「この部分だけを一時的に外して、結果がどうなるか見たい」とか、ブロックコメント的なことがしたいことはある。
その場合にいちいち各行の行頭に「#」を付けて回るのはメンドクサイ(それを簡単にやれるエディタもありますが)。

で、思いついた。
ヒアドキュメントをブロックコメントとして使えばいいじゃん、と。
#!/bin/sh

(何かの処理)

if 条件; then
処理1
: <<__SKIP__ # ← ここから elif 処理2 __SKIP__ # ← ここまでは単に捨てられる else 処理3 fi (その後の処理)

(【追記】11/23
普通のヒアドキュメントだと、中の変数は展開されてしまうので、「: <<'__SKIP__'」か「: <<\__SKIP__」とした方がより良いと気づいた。
こうすると、変数も展開されない。
変数が展開されても、それだけなら特に害は無いとは思いますが、無駄と言えば無駄だし。)

C/C++ のブロックコメントは入れ子にできなかったと思いますが、ヒアドキュメントなら入れ子にしてもエラーにはならない。
#!/bin/sh

(何かの処理)

: <<__SKIP2__ if 条件; then 処理1 : <<__SKIP__ elif 処理2 __SKIP__ else 処理3 fi __SKIP2__ (その後の処理)

おお、これは便利なんじゃないか?

# 入れ子にできるのがいいかどうかは好みの分かれるところかもしれませんが

でも、「自分が思いつく程度のことはすでに誰かが(下手したら皆が)やっている」の法則がしきりに頭に浮かんでくるんですが…。既に知られた手法なのかな?

【追記】11/23
何か、Perl の本には書いてあるらしい、と G-HAL 氏のとこで見たんですが、メモる前に消えてしまった orz
確かに書かれていたのは確認したんですが…

posted by vagus at 19:45| 東京 ☀| Comment(0) | TrackBack(0) | Linux | このブログの読者になる | 更新情報をチェックする
この記事へのコメント
コメントを書く
お名前: [必須入力]

メールアドレス:

ホームページアドレス:

コメント: [必須入力]

認証コード: [必須入力]


※画像の中の文字を半角で入力してください。

この記事へのトラックバック