パイプを使用する複数行bashコマンドの個々の行について読み取ることができるコメントはありますか?

パイプを使用する複数行bashコマンドの個々の行について読み取ることができるコメントはありますか?

パイプとバックスラッシュを含む連続行を使用してシェルスクリプトを生成するときにコメントを挿入したいと思います。別の行に、強力で読みやすく移植可能な方法で。

たとえば、コメント化されていない複数行コマンドがある場合(明確にするために@DigitalRossから取得)

echo abc |
     tr a-z A-Z |
     sort |
     uniq

...次は私が達成しようとしている仕事に審美的に最も近いですが、明らかな理由で動作しません...はい、一般的に言及する価値がないことを理解しています。

# Perform critical system task.
# NOTE - An example of what does *not* work.
echo abc |
    # Convert lowercase to uppercase.
     tr a-z A-Z |

     # Sort the results.
     sort |

     # Only show unique lines.
     uniq

既存の関連回答が満足できないようです。、次のようになります。

まず、グレンジャックマンの答え(配列に引数を追加して配列を実行することは)単一のコマンドでは機能しますが、パイプラインでは機能しません。下痢 そうしても避けたい複雑さが追加されます。

第二に、@Gillesの答えはここにあります。(使用:)はパイプの流れを変更するのでパイプでも動作しないようです。

$ echo "abc" | :
$

ノート:出力を変更せずに渡すのと同じ機能がある場合は、:審美的に受け入れることができますが、まだ見つかりませんでした。カスタム項目を作成できますが、そうすると移植性が低下します。 )

ついに最後の部分ですStackOverflowに対するDigitalRossの回答同じ行にコメントを付けるとうまくいきますが、私は別の行にコメントを付けることを好みます。それ以外の場合、行の長さが大きく変化すると読みやすくなります。

echo abc |         # normal comment OK here`
     /usr/local/bin/really/long/path/ridiculously-long-filename.sh |  # another normal comment OK here
     sort |        # the pipelines are automatically continued
     uniq          # final comment

私は読みやすさを維持し、複雑さを最小限に抑える答えを探しています。あるいは、私が探しているものが実現できない理由についての背景知識を探しています。

ベストアンサー1

これはどうですか?

echo abc | \
# Convert lowercase to uppercase.
tr a-z A-Z | \

# Sort the results.
sort | \

# Only show unique lines.
uniq

(バックスラッシュは次のように必要です。最後の文字このラインで。 )このアプローチがどれほど移植性があるかはわかりませんが、現在bash

おすすめ記事