Shell
zsh 函式從剪貼板中導出多個變數
我希望能夠獲取剪貼板的內容並在 zsh 中對其進行評估而不顯示剪貼板的內容
export FOO=BAR export BAR=BIZ export BAZ=FOO
我試過了
function aws-eval-clipboard { eval | $(pbpaste) }
我覺得很接近?但我明白了
zsh: no such file or directory: export
我完全願意使用甚至可能必須安裝的其他命令。
那寧願是:
eval -- "$(pbpaste)"
或者:
pbpaste | source /dev/stdin
eval
使用其參數的空格計算連接結果的 shell 程式碼。因此,在這裡我們採用pbpaste
with$(...)
命令替換的輸出,引用它以便它不被拆分並將其作為一個參數傳遞給eval
(如果參數以 開頭,則前面--
標記選項的結尾-
)。
source
評估儲存在作為其第一個參數傳遞的文件中的 shell 程式碼。使用source /dev/stdin
,我們告訴它評估它可以在其標準輸入上讀取的程式碼,這是一個pbpaste
在另一端帶有 ’ 輸出的管道。在
eval | $(pbpaste)
中,您正在執行通過管道連接的兩個命令。第一個eval
沒有參數,所以它不計算任何內容,因此不向管道列印任何內容。第二個是通過獲取 的輸出pbpaste
,將其拆分$IFS
並生成一個簡單命令的結果來建構的。使用您顯示的程式碼,這將導致使用, , , ,作為參數
export
執行命令 ,因此在這種情況下應該可以工作(將導出那些, ,變數,以及變數)。你得到的錯誤不能用那個特定的輸入來解釋。FOO=BAR``export``BAR=BIZ``export``BAZ=FOO``FOO``BAR``BAZ``export