2017-08-30 88 views
0

我有一個resque任務來解壓文件。當絕對文件名中沒有空格時,此任務完美工作;但是,如果名稱中有空格,則會失敗。我在反引號中引用了文件名中的引號(見下文),但這似乎沒有在resque任務上有所作爲。更奇怪的是,我可以在控制檯中運行確切的命令,並且它完美地工作。反引號中的文件名引號在resque任務中未被識別,但在控制檯中工作

這是我的代碼。在下面的f.filename = '拉塞爾/人工原AIPS /批次1/rbrl-999-ER-000001_bag.61440.tar.bz2':

f = JobFile.find(id) 
output = `tar xjf "#{File.join('/', 'storage', f.filename)}" -C /working 2>&1` 

在控制檯運行:

2.3.0 :009 > output = `tar xjf "#{File.join('/', 'storage', f.filename)}" -C /working 2>&1` 
=> "" 

輸出的內容運行resque任務後:

tar (child): /storage/russell/artificial-proto-aips/Batch: Cannot open: No such file or directory\ntar (child): Error is not recoverable: exiting now\ntar: Child returned status 2\ntar: Error is not recoverable: exiting now\n 

我必須承認,我感到相當這種行爲感到困惑,但我不想告訴我的用戶不要在目錄名稱中使用空格(如就像我想的那樣)。

有什麼建議嗎?

回答

1

雖然找出問題了。反撥號碼/bin/sh,所以我的bash風格命令失敗。更新/bin/sh指向/bin/bash固定它。

相關問題