.txt
私の個人的なマニュアルファイルからコードブロックをコピーしました。端末に貼り付けてEnterキーを押して実行します。最近、審美的な理由でインデントを行いましたが、コピー時に実行が中断されました(セカンダリプロンプトがオンのまま)。この現象を処理するために、私はFIFO(先入れ先出し)を使用することを考えました。
FIFOを生成し、次のコードブロックを渡そうとします。
⇨⇨⇨⇨(
⇨⇨⇨⇨Indented commands...
⇨⇨⇨⇨)
FIFOは、この元のコードブロックからすべての先行スペース(通常はタブですが空白の場合もあります)を削除し、インデントされていないバージョンを返す必要があります。
(
commands...
)
私が理解したのは、FIFOファイルに入れるべきコードです's/^\s*//g'
。
私の質問:
Bash端末にコードブロックを貼り付けるときに実行する前に作成したFIFOファイルの影響を受けるにはどうすればよいですか?
修正する:
以下は私がテストした完全な構文です。正しく実行されていないため(エラーなし、ヘルパープロンプトのみがオン)、FIFOフィルタの使用を検討しました。
⇨⇨⇨⇨(
⇨⇨⇨⇨command1...
⇨⇨⇨⇨cat <<-'PMA' > /opt/script.sh
⇨⇨⇨⇨⇨⇨⇨⇨#!/bin/bash
⇨⇨⇨⇨⇨⇨⇨⇨strings...
⇨⇨⇨⇨PMA
⇨⇨⇨⇨command2...
⇨⇨⇨⇨) | sed 's/^\s*//g'
ベストアンサー1
私は(かなり簡単に)単純にFIFO(「名前付きパイプ」とも呼ばれます)を生成し、それを通過するデータを変更できるとは思いません。パイプの末端からデータが出たときにデータをフィルタリングする方が簡単な場合があります。たとえば、「行の開始」は行ごとに1回しか表示されないため、対応する[...] | sed 's/^\s*//'
フラグは重複します。g