Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/linux/27.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Linux 使用Bash脚本从文本文件创建多个用户?_Linux_Bash - Fatal编程技术网

Linux 使用Bash脚本从文本文件创建多个用户?

Linux 使用Bash脚本从文本文件创建多个用户?,linux,bash,Linux,Bash,我已经尝试了几个小时从文本文件创建批量用户,但我无法让它工作。在文本文件中,我采用以下格式: John Smith:Student 守则: #!/bin/bash FILE=/home/knoppix/users.txt GECOS=$(cat $FILE | cut -d: -f1) USRGRP=$(cat $FILE | cut -d: -f2) groupadd -f $USRGRP echo "type username" read USERNM USERPW="123456"

我已经尝试了几个小时从文本文件创建批量用户,但我无法让它工作。在文本文件中,我采用以下格式:

John Smith:Student
守则:

#!/bin/bash
FILE=/home/knoppix/users.txt

GECOS=$(cat $FILE | cut -d: -f1)
USRGRP=$(cat $FILE | cut -d: -f2)

groupadd -f $USRGRP

echo "type username"
read USERNM
USERPW="123456"

useradd $USERNM -p $USERPW -g $USRGRP -c "$GECOS,$USRGRP" -d $HOME/$USERNM -s $USERSH -m
它不起作用,当我试着调试bash脚本时,我认为它不是逐行阅读,而是抓取字段中的所有内容

我在users.txt中缺少do while或while IFS或for行。像这样的,但我不是专家。我还应该使用newusers ir-just-useradd

我需要像读每一行时做的事情

可以简化为

ECOS=$( cut -d: -f1 $FILE )
还请注意,对于$FILE中的每一行,您将获得一个值,因此,如果有3行文本,则ECOS将为ECOS=line1Val line2Val line3Val


我希望这能有所帮助。

cat/dev/uradom到底应该做什么!?:-请在代码中添加注释,即描述此步骤试图完成的内容。你可以跳过像mv f.bak这样的自我记录。Good luck/dev/random就像mkpassword,我用它来随机设置密码和用户名如果文本文件中只有一行它可以工作,但是如果我有100行它就不行了,因为我没有读每一行,我需要像读每一行的时候做些什么有人给我一个例子为什么不把你的问题留着,以防他们会帮助其他人?另请看,U&L.SE,所以,AskU,等等。我在文件中添加了一个循环,但正在创建无限的帐户,我如何使脚本在到达最后一行时停止,我添加了…。[$!=EOF];做一些解释;;最好用你最好的作品来更新你的问题。再说一次,你们真的很接近了,但是$返回一个数字,并且永远不会返回任何比EOF更高的值。在[$!=0]时尝试;这就假设在代码中的某个地方,您“使用”了一些参数,这些参数会减少$的值,通常使用shift`。祝你好运
savIFS=${IFS}
> outFile
while IFS=":" read var1 var2 var3 var4 ; do
  echo $var1 $var2 $var3 >> outFile
  echo $var4 >> outFile
done < /home/knoppix/users.txt

IFS=${savIFS}
ECOS=$(cat $FILE | cut -d: -f1)
ECOS=$( cut -d: -f1 $FILE )