pbpaste
クリップボードの内容を返すMacOSXのコマンドを使用しています。pbpaste
によって返される各行を個別のbashコマンドとして実行するシェルスクリプトを作成したいと思います。たとえば、クリップボードの内容が次のテキスト行で構成されているとします。
echo 1234 >~/a.txt
echo 5678 >~/b.txt
これらの各行を実行して、ホームフォルダーにa.txtとb.txtの2つのファイルを作成するシェルスクリプトが必要です。かなりの量の検索と試行錯誤の末、while
次の構成を使用して、ループ内の変数にテキストの個々の行を割り当てることができるようになりました。
pbpaste | egrep -o [^$]+ | while read l; do echo $l; done
予想どおり、これは以下を標準出力に送信します。
echo 1234 >~/a.txt
echo 5678 >~/b.txt
テキストの各行を単純にエコーする代わりに、次の構成でそれらを実行しようとします。
pbpaste | egrep -o [^$]+ | while read l; do $l; done
これで各行が実行されると思いました(したがって、ホームフォルダーに2つのテキストファイルa.txtとb.txtを作成します)。代わりに、最初の用語(echo
)はコマンドとして解釈され、残りの用語(nnnn >~/...
)は単一のパラメーターであるかのようにまとめられているように見えます。その結果、ファイルが作成されずに次の用語が標準出力に送信されます。
1234 >~/a.txt
5678 >~/b.txt
なぜ私の構成が機能しないのか、そしてどのような変更がそれを機能させるのかを理解するのに助けていただければ幸いです。