我試圖使用紅寶石執行shell命令,但我不能將目錄切換到帶有空格的PATH。在紅寶石的shell cd命令
variable = %x[cd #{ENV["HOME"]}/Virtual\\ VMs/]
這是行不通的。 謝謝
我試圖使用紅寶石執行shell命令,但我不能將目錄切換到帶有空格的PATH。在紅寶石的shell cd命令
variable = %x[cd #{ENV["HOME"]}/Virtual\\ VMs/]
這是行不通的。 謝謝
是絕對安全:
path = File.join [ENV["HOME"], 'Virtual VMs']
variable = %x[cd '#{path}']
請注意,cd
具有空輸出,所以要確保它工作一個可能想要做的不便,如:
path = File.join [ENV["HOME"], 'Virtual VMs']
variable = %x[cd '#{path}' && ls -la]
#⇒ "total 32\ndrwxr-xr-x ....."
什麼是否應該這樣做?你嘗試chdir到一個目錄,但是不要做任何事情。無論如何,你的variable
將是空的。除了沒有意義的事實之外,您無法以這種方式自己可靠地執行光盤,因爲它不是可執行文件。你可以看到這個,如果你只是執行%x[cd]
。你會得到一個Errno::ENOENT
例外。
也許你應該首先在更廣泛的背景下描述你想用你的代碼實現什麼。你想在哪裏改變工作目錄?在Ruby進程中 - 在這種情況下,您必須使用Dir.chdir
- 或者在子進程中 - 在這種情況下,您必須在cd之後執行一些命令。
我試圖檢查虛擬機的信息分配在:/根/虛擬VMs /文件夾/文件夾,所以首先我需要改變目錄即時工作 – eifersucht
我的事情Dir.chdir是最好的辦法,但我不能改變路徑上面有空格,系統說消息:Errno :: ENOENT:沒有這樣的文件或目錄@ dir_chdir – eifersucht
再次說明:'Dir.chdir File.join [ENV [「HOME」],'虛擬機]'完美的工作。 – mudasobwa
'variable =%x [cd#{ENV [「HOME」]}/Virtual \\ VMs /]'對我有用 – Santhosh
爲什麼你不使用Ruby std中的'Dir.chdir'? https://ruby-doc.org/core-2.2.0/Dir.html#chdir-method –
我用它。謝謝 – eifersucht