zsh関数はクリップボードから複数の変数をエクスポートします。

zsh関数はクリップボードから複数の変数をエクスポートします。

クリップボードの内容を表示せずにzshからクリップボードの内容を取得して評価できるようにしたいです。

export FOO=BAR
export BAR=BIZ
export BAZ=FOO

頑張った

function aws-eval-clipboard {
    eval | $(pbpaste)
}

私たちは本当に近づいたと思いますか?しかし、私は理解しています

zsh: no such file or directory: export

インストールが必要な可能性がある他のコマンドを使用するために完全にオープンです。

答え1

むしろ次のようになります。

eval -- "$(pbpaste)"

または:

pbpaste | source /dev/stdin

eval引数の空白に関連付けられたシェルコードの結果を評価します。したがって、ここではpbpastewith コマンド replacement の出力を取得し、分割されないように引用$(...)符を入れて引数として渡しますeval--引数が次から始まる場合、前の引数はオプションの終わりを示します-)。

source最初の引数として渡されたファイルに格納されているシェルコードを評価します。を使用して、source /dev/stdin標準入力から読み取ることができるコードを評価するように指示します。この場合、標準入力はパイプで、pbpasteもう一方の端に出力があります。

ではeval | $(pbpaste)、パイプで接続された2つのコマンドを実行しています。最初の項目evalにはパラメータがないため、何も計算しないため、パイプには何も印刷されません。 2番目は出力を取得してpbpaste分割し、単純なコマンドの結果単語を生成することで$IFS構成されます。

表示されたコードを使用すると、コマンドが、、、、をexport引数で実行することになるので、この場合にも機能します(該当、、変数はエクスポートされますが変数もエクスポートします)。発生したエラーは、対応する特定の入力として説明できません。FOO=BARexportBAR=BIZexportBAZ=FOOFOOBARBAZexport

関連情報