shell脚本 for循环拷贝文件

一、描述

  • 需求: 将多个文件拷贝至不同的用户文件夹下,并且用户有对文件的操作权限

二、代码详情

#!/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 ]
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • .bat脚本基本命令语法 目录 批处理的常见命令(未列举的命令还比较多,请查阅帮助信息) 1、REM 和 :: 2...
    庆庆庆庆庆阅读 8,288评论 1 19
  • 一、Python简介和环境搭建以及pip的安装 4课时实验课主要内容 【Python简介】: Python 是一个...
    _小老虎_阅读 5,926评论 0 10
  • 官网 中文版本 好的网站 Content-type: text/htmlBASH Section: User ...
    不排版阅读 4,533评论 0 5
  • 摘要 利用惯导与视觉(单目)组合,在未知环境下检测运动特征点。 方法简介: 首先用估计量初始化方法估计特征点的运动...
    lixu1234阅读 285评论 0 0
  • 这些天一直为写些什么而烦恼,不知其他码字的人又是怎样的,听说大神们每天七千余字,而从末有枯竭的时候,真是让嫉妒羡慕...
    古籍善本阅读 839评论 0 0