如何用Linux bash脚本批量添加用户并分配到对应用户组
问题原因
- 文本格式兼容问题:你的
Usernames.txt是Windows/DOS编码的文本文件,每行末尾携带不可见的\r回车符,读取到的用户组字段末尾会附带该字符,错误提示里的$'[visitor\r'就是该字符导致的。 - 条件语法错误:bash中
[是独立的测试命令,其后必须跟随空格,你写的[${arrIN[1]} = "visitor" ]缺少空格,会被系统判定为不存在的命令。 - 配置不一致错误:你文件中标注的访客组标识是
visitor,但脚本里添加组的语句写的是visitors,运行时会出现找不到用户组的报错。
修复方案
- 优先执行
dos2unix Usernames.txt将文件转为Unix兼容格式,也可以直接使用下方优化后的脚本,无需提前修改原文件。 - 修正后的脚本省去了冗余的判断逻辑,直接读取文件内的用户组信息操作,兼容性更强:
#!/bin/bash # 读取时按逗号拆分字段,自动处理空行和换行符兼容问题 while IFS=, read -r username group || [ -n "$username" ]; do # 清除字段中可能残留的DOS回车符 group=${group%$'\r'} sudo useradd "$username" sudo usermod -a -G "$group" "$username" done < Usernames.txt
内容的提问来源于stack exchange,提问作者Mikail Nicholas
相关产品推荐
相关产品推荐

