2016-07-22 46 views
0

我在當前目錄中有一個名爲0_400x24_multi_newton20的目錄。我想將它複製爲2_400x24_multi_newton20,4_400x24_multi_newton20,....我的循環cp一個班輪有什麼問題?

所以我用下面的代碼

for((i=2;i<21;i=i+2)); do cp -r "0_400x24_multi_newton20/" "$i_400x24_multi_newton20/"; done 

但它警告我說,

CP:無法創建目錄`/ 0_400x24_multi_newton20 「:權限 否認

在另一方面

cp -r "0_400x24_multi_newton20/" "2_400x24_multi_newton20/" 

工作

那麼如何正確做呢?

+1

錯誤信息有一個前導'/'但你的代碼沒有。你確定* this *是產生錯誤的代碼嗎? –

+0

@ P.P。 yes看到這裏http://pasteboard.co/etv3Jw8f6.png – user15964

+3

在你的情況下,shell尋找一個名爲'i_400x24_multi_newton20'的變量,它是未定義的。所以'cp'命令會被擴展爲'cp -r'0_400x24_multi_newton20 /「」/「',結果,該命令試圖將'0_400x24_multi_newton20'複製到根目錄'/',因此你會得到錯誤對'/'沒有寫權限。答案@M。 Dogru提供了下面的修復問題。 – hflzh

回答

2

可以通過;

for((i=2;i<21;i=i+2)); do cp -r "0_400x24_multi_newton20/" "${i}_400x24_multi_newton20/"; done 
+0

哦,是的。有用!但爲什麼?我看到的教程總是'$ i' – user15964

+0

$ i沒有擴展,所以應該使用{} –

+3

這裏的問題不是'$ i不能解釋',而是shell將$ i_400x24_multi_newton20作爲一個整體進行擴展, t存在,用空值替換它。 – sjsam