2013-01-11 64 views
0
#!/bin/bash 
while read -r line; do 
    mkdir "UNIX/$line" 
done < usernames.lnk 

MasterDir="/home/darkeve/Documents/OS/master/"   
USERHOME="/home/darkeve/Documents/OS/UNIX"    

for FILENAME in `cat $MasterFile` 
do 
    cp $MasterDir/$FILENAME $USERHOME/$USER 
done 

我的腳本首先讀取名爲「usernames」的文件,併爲每個用戶創建單個文件夾到UNIX文件夾中。但它應該從名爲「file1,file2和file3」的主文件夾複製3個文件,並將它們複製到UNIX文件夾中的每個單獨的用戶文件夾中,但它根本不會這樣做。任何幫助,將不勝感激。bash:將文件複製到多個位置

p.s.我對腳本非常陌生,所以請保持簡單。

+0

您是否收到任何類型的錯誤? – SpaceCowboy

+3

什麼是$ MasterFile?它沒有被初始化任何地方都沒有$ USER – SpaceCowboy

+0

我沒有得到任何錯誤沒有,也是主文件是指向主文件夾中需要複製到UNIX文件夾中的個人用戶文件夾中的三個文件。 – darkeve

回答

1

您當前的腳本在cp命令中使用$ USER,該命令是'用戶運行腳本',而不是從usernames.lnk讀取。如果您要複製到你需要把for循環的第一個內部的每個單獨的文件夾while循環和使用$線爲目標文件夾的名稱,如:

#!/bin/bash 
MasterDir="/home/darkeve/Documents/OS/master/"   
USERHOME="/home/darkeve/Documents/OS/UNIX" 
MasterFile="filenames.txt" 

while read -r line; do 
    mkdir "UNIX/$line" 
    for FILENAME in `cat $MasterFile` 
    do 
     cp "$MasterDir/$FILENAME" $USERHOME/$line 
    done 
done < usernames.lnk 

它通常是一個好主意,只是回聲的事情,當你不知道出了什麼問題,你可以試試

echo "$line" 
echo "$USER" 

等等來查看這些變量的差異。

另外,$ MasterFile未在您的腳本中定義。它應該在開始時以與MasterDir和USERHOME相同的方式引入。

編輯:我在腳本示例中添加了它,請將其更改爲與您的文件相對應。

+0

這工作,感謝一百萬 – darkeve

相關問題