从 dat 文件添加用户

从 dat 文件添加用户

我有一个包含名称的数据文件。这些是我必须添加的用户名,没有组或密码。当然,我必须删除所有空格。我必须用 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 

相关内容