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

我的脚本完成了第一项工作,它首先读取一个名为“用户名”的文件,然后为每个用户创建单独的文件夹到 UNIX 文件夹中。但是它应该从名为“file1、file2 和 file3”的主文件夹中复制 3 个文件,并将它们复制到 UNIX 文件夹中的每个单独的用户文件夹中,但它根本不这样做。任何帮助,将不胜感激。

ps 我对脚本很陌生,所以请保持简单。

4

1 回答 1

1

您当前的脚本在 cp 命令中使用 $USER ,即“运行脚本的用户”,而不是从usernames.lnk读取。如果要复制到每个单独的文件夹,则需要将 for-loop 放在第一个 while 循环中,并使用 $line 作为目标文件夹名称,如下所示:

#!/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 相同的方式引入。

编辑:我在脚本示例中添加了它,请更改它以与您的文件相对应。

于 2013-01-11T10:04:53.823 回答