我是Scripting的新手,我不确定我的错误。我还没有添加groupadd或useradd命令来实际添加用户,但我会让这部分工作。到目前为止,我有:
!#/bin/bash
if [$# -ne 0 ]
then
echo "usage: $0 < file'
exit 1
fi
first=cut -f 1 -d ',' user_list
last=cut -f 2 -d ',' user_list
lastl=cut -f 2 -d ',' user_list | head -c 1
usern=$first $lastl | tr 'A-Z' 'a-z'
tname=$first $last
while read line; do
echo "adding $tname : $usern\n"
done < user_text
输出应该看起来像adding Jet Black: jetb
但是它的所有类型。关于我做错的任何帮助或提示都会有很大帮助。
答案 0 :(得分:1)
通过在单词拆分中阅读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:]
等)的字符类,捕获命令的输出($(...)
)。
答案 1 :(得分:0)
这是一个语法正确的脚本版本:
#!/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,但我认为你最好的第一步是理解你的语法错误。