从bash脚本的文本文件中添加新用户
我是脚本编写新手,我不确定我的问题。我还没有添加groupadd或useradd命令来实际添加用户,但是我将一旦得到这部分工作。到目前为止,我有从bash脚本的文本文件中添加新用户
#/斌/庆典
如果[$#-ne 0]
然后
回声“用法:$ 0 <文件”
1号出口
网络第一=
cut -f 1 -d ',' user_list
最后=cut -f 2 -d ',' user_list
lastlcut -f 2 -d ',' user_list | head -c 1
用户N =
$first $lastl | tr 'A-Z' 'a-z'
TNAME =$first $last
而读取线;做
回声 “并称$ TNAME:$用户N \ N”
做< USER_TEXT
输出应该看起来像adding Jet Black: jetb
但同类所有的地方的。任何帮助或暗示,我做错了什么会有很大帮助。
你也许可以让它变得简单许多通过阅读上来就IFS
变量的分词中的作用,然后写是这样的:在那里研究
while IFS=, read first last
do
usern=$(echo "${first}${last:0:1}" | tr [:upper:] [:lower:])
tname="${first} ${last}"
echo "adding ${tname} : ${usern}"
done
一些其他的东西 - 串扩张( (${last:0:1}
),tr
([:upper:]
等)的字符类别,捕捉来自命令($(...)
)的输出。
谢谢我不知道IFS。我一直在阅读它一段时间,它真的很有帮助。 – user2163296 2013-03-13 20:42:36
这是你的脚本语法正确的版本:
#!/bin/bash
if [ $# -ne 0 ]
then
echo "usage: $0 < file"
exit 1
fi
while read user_list
do
first=`echo $user_list | cut -f 1 -d ','`
last=`echo $user_list | cut -f 2 -d ','`
lastl=`echo $last | head -c 1`
usern=`echo $first $lastl | tr 'A-Z' 'a-z'`
tname=`echo $first $last`
echo "adding $tname : $usern\n"
done < user_text
我想你想删除$first
和$lastl
之间的空间$usern
,像这样:
usern=`echo ${first}${lastl} | tr 'A-Z' 'a-z'`
再就是很多改进措施可能像twalberg said,但我认为你最好的第一步是理解你的语法错误。
你的语法在差不多一半的行上是错误的。 – jordanm 2013-03-13 19:01:17