在我的 Windows 10 機器上,我安裝了 Ruby 版本 2.7.0 的 Ubuntu WSL。在我的 Ruby 腳本中,我試圖從變數中獲取一個值并將其復制到剪貼板。
在調查這一點時,我發現沒有任何真正直接的方法可以在本地做到這一點。我確實找到了這篇關于某人創建的 gem 以便輕松訪問剪貼板的SO 帖子(這里是 github repo 的鏈接)。我完成了安裝它并在我的 gemfile 中參考它的所有步驟,但由于某種原因,變數值沒有被復制到我的剪貼板。
這是我的 Ruby 腳本中的代碼:
puts data2
Clipboard.clear
Clipboard.copy(data2);p
此時在我的腳本中,我想復制到剪貼板的值在其中data2,我通過將其輸出到控制臺來驗證該值是否在其中。然后我嘗試清除剪貼板,然后data2按照 github 頁面中的說明復制到剪貼板。我運行我的腳本,它完成了,但是當我嘗試粘貼剪貼板上的值時,它不是我期望的值(剪貼板上的值是我運行 Ruby 腳本之前的值)。
以前,我使用以下代碼在 Mac 上進行了此操作:
IO.popen('pbcopy', 'r ') { |clipboard| clipboard.puts data2 }
但這在 WSL 上不起作用,因為我相信這pbcopy是 Mac OS 的事情。
需要注意的一件事是,當我運行我的 Ruby 腳本時,它確實給了我這個警告:
ruby:警告:以 \r 結尾的 shebang 行可能會導致問題
但我不知道這將如何阻止將變數值保存到我的剪貼板。
請有人讓我深入了解為什么這不能按預期作業,或者甚至是將變數值復制到剪貼板的不同/更好的方法,以便我可以在 Ruby 腳本運行完成后粘貼該值?與往常一樣,正確、清楚解釋的答案將被標記為已接受和贊成。
謝謝!
uj5u.com熱心網友回復:
感謝@max 的洞察力。我能夠想出一個解決方案來滿足我的需要,這是代碼:
exec( "echo '#{data2}' | clip.exe" )
此代碼片段獲取存盤在其中的值data2并將其復制到剪貼板。當腳本在我的 Ubuntu WSL 中運行完畢后,我可以粘貼,剪貼板上的值是data2腳本運行時包含的值。
希望這對其他人有幫助。
轉載請註明出處,本文鏈接:https://www.uj5u.com/net/359990.html
