複数行のbashコマンドのコメント


32

この単一コマンドのBASHスクリプトファイルは理解するのが難しいため、アクションごとにコメントを書きたいと思います。

echo 'foo'     \
| sed 's/d/a/' \
| sed 's/e/b/' \
| sed 's/f/c/' \
> myfile

(sedは単なる例であり、実際にはgrepsとtrsとawksが混在しています)

行を複製したり、各コメントが適用される行から遠く離れていることを嫌います。
しかし同時に、BASHは「インライン」コメントを許可していないようです。

この問題を解決するエレガントな方法はありますか?

回答:


51

行末にコメントを付けてパイプを配置します。

$ echo 'foo' |
sed 's/f/a/' | # change first f to a
sed 's/o/b/' | # change first o to b
sed 's/o/c/'   # change second o to c
abc

何かがパイプ従うことが期待されているので、理にかなって
MrCholo

15

-pipeline 以外の複数行コマンドをコメントしようとしているときにこの質問が発生した場合:

$ echo 'foo' |
sed -e 's/f/a/' `: # change first f to a` \
    -e 's/o/b/' `: # change first o to b` \
    -e 's/o/c/' `: # change second o to c`

コメントの自動化のような本当にひねくれた何かをしているのでなければ、パイプについてのMikelの答えよりもこれを好む理由はわかりませんが、本当にしたいのなら:

$ echo 'foo' |
sed 's/f/a/' | `: # change first f to a` \
sed 's/o/b/' | `: # change first o to b` \
sed 's/o/c/'   `: # change second o to c`

または:

$ echo 'foo' |
sed 's/f/a/' `: # change first f to a` |
sed 's/o/b/' `: # change first o to b` |
sed 's/o/c/' `: # change second o to c`

出典:http : //unix.derkeiler.com/Newsgroups/comp.unix.solaris/2005-07/0991.html


10

まあ、私はこの方法を好む、

echo 'foo' | {
  # change first f to a
  # you can add more lines of comment on the command options
  sed 's/f/a/'
} | {
  # change first o to b
  sed 's/o/b/'
} | {
  # change second o to c
  sed 's/o/c/' 
}
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.