美文网首页
shell脚本 for循环拷贝文件

shell脚本 for循环拷贝文件

作者: 带刀打天下 | 来源:发表于2018-12-17 16: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 ]

    相关文章

      网友评论

          本文标题:shell脚本 for循环拷贝文件

          本文链接:https://www.haomeiwen.com/subject/ftlckqtx.html