Shell

zsh 函式從剪貼板中導出多個變數

  • April 10, 2021

我希望能夠獲取剪貼板的內容並在 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 程式碼。因此,在這裡我們採用pbpastewith$(...)命令替換的輸出,引用它以便它不被拆分並將其作為一個參數傳遞給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

引用自:https://unix.stackexchange.com/questions/644371