1 主要内容
可以使用Shell脚本来实现将开发机(Linux)上user1账户下的abc文件夹复制到user2、user3和user4账户下。
#!/bin/bash
# 数组赋值,目标用户列表
# target_users=(user2 user3 user4)
# 定义数组
target_users=()
# 生成user+数字的数组,例如,生成user1到user5
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 常见报错
- 各种\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
运行脚本