2015-04-27 22 views
1

我寫了一個簡短的csh腳本讀取一個文件,其中包含路徑要複製的文件,然後複製這些文件到一個目錄:涉及到如何「CP --parents」有趣的問題,工作

1 #!/bin/csh 
2 # 
3 # This script copies source and executable files modified to solve issues 
4 # brought up by Veracode. 
5 # 
6 
7 set tempdir = '~/updatedfiles2' 
8 
9 foreach line ("`cat modifiedFiles`") 
*************here is the cp line************** 
10 `cp -a $line $tempdir` 
********************************************** 
11 end 

以前工作正常。因爲在具有不同路徑的文件具有相同名稱的情況下,發生了碰撞,所以我決定保留目錄樹形式下的這些文件的路徑,該目錄樹在tempdir目錄下。 (即/vobs/emv/integratedClient/jniWrapper/OEMIMAKEFILE/vobs/mv_components/utilities/general/OEMIMAKEFILE

所以,我試圖用--parents選項,就像這樣:

1 #!/bin/csh 
2 # 
3 # This script copies source and executable files modified to solve issues 
4 # brought up by Veracode. 
5 # 
6 
7 set tempdir = '~/updatedfiles2' 
8 
9 foreach line ("`cat modifiedFiles`") 
*************here is the cp line************** 
10 `cp -a --parents $line $tempdir` 
********************************************** 
11 end 

當我測試了一下,開始嘗試我的系統的整體複製,在首發根目錄,這不是我想要的效果。我只是試圖複製特定的文件,在複製時維護它們的目錄結構。

我找到了一些關於--parents的解釋,但沒有一個描述我所看到的事情。是因爲我用--parents錯了嗎?它是我的輸入文件嗎?我不確定。

modifiedFiles含量(這是tempdir的值)看起來像這樣:

... 
4 /vobs/emv/C_API/APIPrivate.cpp 
5 /vobs/mv_components/utilities/class/Array.c 
6 /vobs/mv_components/utilities/class/String1.c 
7 /vobs/mv_components/export_functions/code/write_nastran_ortho3_none.c 
... 

/vobs是根目錄,所以這可能是實現一些與--parents。有沒有人聽說過無限制的遞歸複製,儘管有特定的文件路徑和沒有-r的說法?我誤解了--parents

回答

0

哇,我覺得啞巴。

經過一遍又一遍的瀏覽之後,我發現我做錯了什麼。

上面的實際命令是在一個csh腳本中。當在csh腳本中將一個命令封裝在(``)前面時,該命令被執行,並且該命令的輸出被shell使用。因此,我在執行cp,然後在shell中執行輸出。我不確定爲什麼它是遞歸地向上複製,但是刪除那些前面的蜱來修復所有的東西。之前的錯誤是我在原始「工作」腳本中忽略的,當我添加--parents選項時,已經損壞的腳本破碎得更多。

道德故事,小心前蜱!

對於任何人誰是有興趣,之前:

... 
9 foreach line ("`cat modifiedFiles`") 
*************here is the cp line************** 
10 `cp -a --parents $line $tempdir` 
********************************************** 
11 end 
... 

而經過:

... 
9 foreach line ("`cat modifiedFiles`") 
*************here is the cp line************** 
10 cp -a --parents $line $tempdir 
********************************************** 
11 end 
... 

此外,兩個輸入文件中的條目採用C風格的被註釋掉 /* comment */ 這是導致從根目錄進行遞歸複製。哈哈....哎。愚蠢的我。