需要创建一个 bash 脚本来从包含以下内容的文件创建用户名(用户名主目录全名)
drs /home/drs Paranas Theruwalan
我的脚本:
!#/bin/bash
#call data from file
file="file.txt"
USERNAME=$(cat file.txt | cut -d: -f1)
USER_FULLNAME=$(cat file.txt | cut -d: -f2)
useradd -m ($USERNAME) -c ($USER_FULNAME)
我收到无效的用户名错误。
答案1
您的分隔符、空格或冒号是什么?您的示例建议使用空格,您的代码建议使用冒号。
你可以在 bash 中做到这一点。
#!/bin/bash
file="file.txt"
while IFS=: read USERNAME USER_HOME USER_FULLNAME; do
useradd -m -c "$USER_FULLNAME" -d "$USER_HOME" "$USERNAME"
done < "$file"
此示例假设输入文件包含以下行
drs:/home/drs:Paranas Theruwalan
答案2
首先,您应该删除使用变量的 ():
useradd -m ${USERNAME} -c ${USER_FULNAME}
其次检查用户名的输出,可能包含无效字符。
答案3
干得好:
#!/bin/bash
#call data from file
FILE="file.txt"
USERNAME=$(cut -d " " -f 1 $FILE)
USER_FULLNAME=$(cut -d " " -f 3,4 $FILE)
useradd -m -c "${USER_FULLNAME}" "${USERNAME}"