shell脚本 for循环拷贝文件
2018-12-17 本文已影响0人
带刀打天下
一、描述
- 需求: 将多个文件拷贝至不同的用户文件夹下,并且用户有对文件的操作权限
二、代码详情
#!/bin/bash
user_ids=(108878 108865 108835 108834) # 声明用户id数组
files=("机器学习案例.zip") # 声明文件数组
for item in ${user_ids[@]}
do
for item2 in ${files[@]}
do
if [ ! -d '/mnt/acs_mnt/nas/xiniulab/userdata/'$item'' ]; then # -d 查看 filename 是否为目录
mkdir '/mnt/acs_mnt/nas/xiniulab/userdata/'$item''
fi
chmod -R ugo+rwx '/mnt/acs_mnt/nas/xiniulab/userdata/'$item'' # 给文件夹设置权限
echo $item
cp $item2 '/mnt/acs_mnt/nas/xiniulab/userdata/'$item'/'$item2'' # 拷贝文件
done
done
- 代码详解
- 语法格式:
chmod [-vR] mode文件名
参数说明:
mode权限设置字串,格式为[ugoa] [+-=] [rwx]
u表示文件的拥有者
g表示与此文件拥有者属于一个组群的人
o表示其他人
a表示包含以上三者即文件拥有者(u)、群组(g)、其他(o)
+表示增加权限
-表示取消权限
=表示唯一设置权限
r表示有读取的权限
w表示有写入的权限
x表示有执行的权限
-v显示权限改变的详细资料
-R表示对当前目录下的所有文件和子目录进行相同的权限更改 - 文件比较运算符
-e filename如果 filename存在,则为真,例: [ -e /test ]
-d filename如果 filename为目录,则为真,例: [ -d /test ]
-f filename如果 filename为常规文件,则为真,例: [ -f /test ]
-L filename如果 filename为符号链接,则为真,例: [ -L /test ]
-r filename如果 filename可读,则为真,例: [ -r /test ]
-w filename如果 filename可写,则为真,例: [ -w /test ]
-x filename如果 filename可执行,则为真,例: [ -x /test ]
- 语法格式: