我已经尝试了几个小时从文本文件创建批量用户但我无法使其工作 在文本文件中,我有以下格式
约翰史密斯:学生
#!/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脚本时,我认为它不是逐行阅读,它抓住了字段中的所有内容。
我在IFS或者在users.txt中的行中错过了一次。这样的事情,但我不是专家的帮助。我也应该使用newusers而不仅仅是useradd
答案 0 :(得分:0)
我在阅读每一行时需要做类似的事情
> outFile
while read var1 var2 var3 var4 ; do
echo $var1 $var2 $var3 >> outFile
echo $var4 >> outFile
done < /home/knoppix/users.txt
这假设users.txt值由空格字符分隔,并且每行有4个字要进行某些处理。
如果你的值是用空格字符旁边的东西分隔的,例如':'char,那么你必须告诉read命令在IFS(InternalFieldSep)中使用什么,所以
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 )
另请注意,对于$ FILE中的每一行,您将获得一个值,因此如果有3行文本,则ECOS将为ECOS="line1Val line2Val line3Val"
我希望这会有所帮助。