【shell】脚本实现将开发机user1账户下的abc文件夹复制到user2~4账户下

1 主要内容

可以使用Shell脚本来实现将开发机(Linux)上user1账户下的abc文件夹复制到user2、user3和user4账户下。

#!/bin/bash

# 数组赋值,目标用户列表
# target_users=(user2 user3 user4)
# 定义数组
target_users=()

# 生成user+数字的数组,例如,生成user2到user4
for ((i = 2; i <= 4; i++)); do
    target_users+=("user${i}")
done

# 源路径,user1账户下的abc文件夹
source_path="/home/user1/abc"

# 循环遍历目标用户,并复制文件夹
for user in "${target_users[@]}"; do
    # 构建目标路径
    target_path="/home/${user}/"

    # 执行复制命令
    cp -r "$source_path" "$target_path"

    # 输出复制信息
    echo "已将${source_path}复制到${target_path}"
done

# 输出完成信息
echo "复制完成!"

2 常见报错

  1. 各种\r字符导致报错
2.sh: line 2: $'\r': command not found
2.sh: line 5: $'\r': command not found
2.sh: line 8: syntax error near unexpected token `$'do\r''
'.sh: line 8: `do

解决方案:使用notepad将格式转一下
在这里插入图片描述
2. Syntax error: “(“ unexpected

root@gpu:/home/xxx# sh 1.sh
: not found
2.sh: 4: Syntax error: "(" unexpected

原因:常见的linux发行版,虽然很多是将sh指向bash;但debian/ubuntu上sh命令默认是指向dash,而不是bash,dash比bash还轻量,只支持基本的shell功能, 不包括类似于代码中的数组初始化方式,所以会识别不了,报Syntx error。

解决方案:使用 bash 1.sh 运行脚本

  • 8
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值