#!/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
我的脚本完成第一个工作,它首先读取一个名为&#34; usernames&#34;并为UNIX文件夹中的每个用户创建单独的文件夹。但它应该从主文件夹中复制3个文件,名为&#34; file1,file2和file3&#34;并将它们复制到UNIX文件夹中的每个单独的用户文件夹中,但它根本不会这样做。任何帮助将不胜感激。
P.S。我对脚本非常陌生,所以请保持简单。
答案 0 :(得分:1)
您当前的脚本在cp命令中使用$ USER,这是“用户运行脚本”而不是从 usernames.lnk 中读取。如果你想复制到每个单独的文件夹,你需要先将for循环放在第一个循环中,并使用$ 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相同的方式引入。
编辑:我在脚本示例中添加了它,请将其更改为与您的文件对应。