2010-04-21 27 views
3

我想要一個shell腳本,將部分日誌從我的系統的一部分複製到hudson工作區,以便我可以將它們歸檔。如何讓Hudson停止轉義我的shell腳本的部分內容?

所以現在我有

#!/bin/bash -ex 
cp /directory/structure/*.log . 

這是一種足以改變爲

cp '/directory/structure/*.log' . 

這當然是沒有發現,因爲我沒有一個名爲* .log文件。

那麼如何讓這個腳本工作?

編輯 因此,我遺漏了我使用sudo cp /path/*.log的部分,因爲我認爲這不重要。當然,它和sudo不是哈德森的問題。

+1

我已經看到jenkins對jenkins shell,'sudo'中的任何'*'做了這個或不是。 – 2013-11-05 22:11:29

回答

1
sudo bash -c "cp /directory/structure/*.log" 
1

一個簡單的答案是將shell腳本放在一個單獨的文件中,並用hudson調用它。

+0

這將是我在這種情況下的最後一招。我希望能夠從場外對劇本進行更改,並且我們的權限可以讓網頁更容易地轉到屏幕上。 – 2010-04-21 21:26:13

+0

如果你做的不僅僅是cp,那麼你可以將cp分離成單獨的腳本,然後保持靈活性 – 2010-04-22 06:42:25

0

把它扔在那裏,但還沒有機會嘗試在哈德森(所以我不知道它如何被引用):

for f in /directory/structure/*.log ; do 
    cp $f . 
done 

在我簡單的測試,在bash shell,不同的引用選項會生成複製命令的一個或多個調用(包含所有匹配的文件或一次一個),但它們都可以成功執行復制。

+1

不起作用。 Hudson把它變成:for/in /directory/structure/*.log';做 – 2010-04-22 15:15:20

+0

@Rob_Spieldenner行。對我而言,$ f現在包含帶引號的字符串,shell在cp命令中執行glob。 – 2010-04-22 21:14:09