我有一个包含名称的数据文件。这些是我必须添加的用户名,没有组或密码。当然,我必须删除所有空格。我必须用 bash 脚本添加它们。谁能帮我写剧本吗?
文件:
Marianne Earman
Justina Dragaj
Mandy Mcdonnell
Conrad Lanfear
Cyril Behen
Shelley Groden
Rosalind Krenzke
Davis Brevard
Winnie Reich
Trudy Worlds
Deshawn Inafuku
Claudio Loose
Sal Pindell
Cristina Sharper
Tricia Kruss
我的脚本:
#!/bin/bash
#users.dat | sed "s/\t\t*/ /g"
while read p; do
#var=$(echo $p | sed "s/\t\t*/ /g")
var= echo $p | sed '/^$/d;s/[[:blank:]]//g'
#sudo useradd $var
sudo useradd $var
done < users.dat
答案1
这可以在单个管道中完成 - 只需用于xargs
运行useradd
其输入中的每一行:
sed '/^[[:space:]]*$/d; s/[[:space:]]//g' users.dat |
xargs -I{} echo {}
当您确定它正在做正确的事情时替换echo
为。useradd
另请注意,如果您是为基于 Debian 的系统(例如 Ubuntu、Linux Mint)编写此代码,则应考虑使用adduser
而不是useradd
.欲了解更多详情,请参阅 -adduser 做了哪些 useradd 不做的事情?
答案2
您需要在执行命令之前通过附加的方式将输出存储echo
在变量中。这样,现在就会有之前的命令输出。尝试下面的脚本。它应该工作正常。var
$
var
#!/bin/bash
while read p; do
var=$(echo $p | sed '/^$/d;s/[[:blank:]]//g')
echo $var
#sudo useradd $var
done < users.dat