gpt4 book ai didi

linux - 使用 ":"的 awk 字段分隔符并忽略 ":"内的空格

转载 作者:塔克拉玛干 更新时间:2023-11-03 00:07:17 24 4
gpt4 key购买 nike

我正在尝试在 Linux 中自动创建用户(批量用户)。因此,我创建了一个文本文件,其中包含用户创建所需的所有参数。

文本文件包含以下内容:

tom:tom1:588:0:test user1:/home/test:/bin/false
harry:harry1:589:0:test test2:/hom/test2:/bin/nologin

尝试使用 awk 命令打印列的 for 循环并使用来自 /tmp/user.txt 的信息创建用户

for userdetails in $(cat /tmp/user.txt) 
do
user=`echo $userdetails | awk -v FS=: '{print $1}'`
passwd=`echo $userdetails | awk -v FS=: '{print $2}'`
uid=`echo $userdetails | awk -v FS=: '{print $3}'`
gid=`echo $userdetails | awk -v FS=: '{print $4}'`
comment=`echo $userdetails | awk -v FS=: '{print $5}'`
home_dir=`echo $userdetails | awk -v FS=: '{print $6}'`
user_shell=`echo $userdetails | awk -v FS=: '{print $7}'`
useradd -d "$home_dir" -c "$comment" -s "$user_shell" -u "$uid" -g "$gid" "$user"
echo "$passwd" | passwd "$user" --stdin;
done

实际输出:

useradd: invalid home directory ''
passwd: Unknown user name 'tom'.
useradd: invalid home directory ''
passwd: Unknown user name 'user1'.
useradd: invalid home directory ''
passwd: Unknown user name 'harry'.
useradd: invalid home directory ''
passwd: Unknown user name 'test2'.

我做错了什么?

P.S:我知道在 Linux 中有一个名为 newusers 的命令,但我需要通过脚本检查它以在 Linux 中创建批量用户。

最佳答案

我知道你是如何开始走那条路的,但你偏离了基地。只需使用一个 shell 循环:

while IFS=':' read -r user passwd uid gid comment home_dir user_shell; do
useradd -d "$home_dir" -c "$comment" -s "$user_shell" -u "$uid" -g "$gid" "$user"
echo "$passwd" | passwd "$user" --stdin;
done < /tmp/user.txt

上面只是展示了如何将文件内容读入变量,它假定您知道您在使用“useradd”和“passwd”行做什么。

关于linux - 使用 ":"的 awk 字段分隔符并忽略 ":"内的空格,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44132617/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com