回答:
bashでは:
#!/bin/bash
echo before comment
: <<'END'
bla bla
blurfl
END
echo after comment
'
そして'
周りのEND
区切り文字はそうでない場合は例えばのようなブロック内のものは、重要であり、$(command)
解析され、実行されます。
EOF
は古典的な例です(そして!
、それ自体は感嘆符です)が、コメント化された資料で単独で行に表示されないSNURFLE_BURGERS
、classical_end_marker
またはその他の単語を使用できます。私はスペースなどを試してみるのはうんざりするだろうが、単語はそれらでもうまくいくかもしれない。
:
、入力を読み取らず、常に正常な値で終了するコマンド()を実行し、「コメント」を入力として送信しています。それほど多くはありません。
シェルスクリプトに関するブロックコメントはありません。
vi
(はい、vi
)を使用すると、n行目からm行目まで簡単にコメントできます
<ESC>
:10,100s/^/#/
(これは、10行目から100行目までを、#記号の付いた行頭文字(^)で置き換えます。)
とコメントを外す
<ESC>
:10,100s/^#//
(つまり、10行目から100行目まで、置換行開始(^)の後に//を付けた#が続きます。)
vi
どこにでもどこでもほぼ普遍的です/bin/sh
。
|noh
れる場合は、最後に追加してください。パイプは追加のコマンドnoh
を区切り、ハイライトなしです。検索語の強調表示は、次に何かを検索したときに自動的に再開されます。例::10,100s/^/#/g|noh
<SHIFT>+G 10 <ENTER>
その後、0
または他の方法で移動します)。次に、を使用<CTRL>+V
してビジュアルブロックモードに入り、コメントを付けるすべての行の先頭を強調表示します(この例では90 J
)。次に、を押しSHIFT+I
て、強調表示されたブロックの前に挿入します。コメント記号(例:)を入力し、#
を押し<ESC>
て接頭辞を終了します。この説明は非常に長く聞こえますが、私の経験では、実際にははるかに高速です。
以下を使用できます。
if [ 1 -eq 0 ]; then
echo "The code that you want commented out goes here."
echo "This echo statement will not be called."
fi
if [ ];
動作します。
if false;
。 stackoverflow.com/a/18019516/2097284
以下は、のために働く必要がありsh
、bash
、ksh
とzsh
。
コメントするコードのブロックが内部に置くことができるBEGINCOMMENT
とENDCOMMENT
。
[ -z $BASH ] || shopt -s expand_aliases
alias BEGINCOMMENT="if [ ]; then"
alias ENDCOMMENT="fi"
BEGINCOMMENT
echo "This line appears in a commented block"
echo "And this one too!"
ENDCOMMENT
echo "This is outside the commented block"
上記のコードを実行すると、次の結果になります。
This is outside the commented block
このようにコメントされたコードブロックのコメントを解除するには、次のように言います。
alias BEGINCOMMENT="if : ; then"
の代わりに
alias BEGINCOMMENT="if [ ]; then"
上記の例では。
一重引用符をかわすことができる場合:
__='
blah blah comment.
'
Vimの場合:
shift-V
(ビジュアルモードに入る)、ブロック内のハイライト行を上下に移動:s/^/#/
コマンドは次のようになります。
:'<,'>s/^/#
Enterキーを押します
例えば
shift-V
jjj
:s/^/#
<enter>
:s/^#/
次のように設計されたVi / VimのVisual Blockモードを使用できます。
Ctrl-V
Highlight first element in rows you want commented
Shift-i
#
esc
コメントは次のようになります:
Ctrl-V
Highlight #'s
d
l
これは、行番号を数えたり読んだりするのではなく、viがこの種のことを行うインタラクティブな方法です。
最後に、Gvimでビジュアルブロックモードにするには、ctrl-vではなくctrl-qを使用します(これが貼り付けのショートカットだからです)。
正直なところ、なぜそんなにオーバーエンジニアリングするのか...
パッシブコードを生成するためのアクティブコードを書くことは本当に悪い習慣だと私は思います。
私の解決策:ほとんどのエディターにはブロック選択モードがあります。これを使用して、コメント化するすべての行に#を追加します。大したことは...
メモ帳の例:
作成するには:Alt-マウスを下にドラッグして、#を押します。
削除するには:Altキーを押しながらマウスを下にドラッグ、Shiftキーを押しながら右矢印、削除。
sunny256が承認した回答のhere-docトリックのバリエーションは、コメントにPerlキーワードを使用することです。コメントが実際に何らかのドキュメントである場合は、コメント付きブロック内でPerl構文の使用を開始できます。これにより、適切にフォーマットされた出力を印刷したり、manページに変換したりできます。
限りシェルが懸念している、あなただけ交換する必要がある'END'
と'=cut'
。
echo "before comment"
: <<'=cut'
=pod
=head1 NAME
podtest.sh - Example shell script with embedded POD documentation
etc.
=cut
echo "after comment"
(「シェルスクリプトへのドキュメントの埋め込み」にあります)