用户建立脚本
执行 users_create.sh userlist passlist
建立 userlist 列表中的用户
设定 userlist 列表中的密码为 passlist 列表中的密码
当脚本后面跟的文件个数不足两时,报错
当文件行数不一致时报错
当文件不存在时报错
当用户存在时报错
if [ “$#” -lt “2” ] #判断后面跟的文件是否为两个文件
then echo “Please input userlist and passlist following $0”
exit 1
fi
[ “-e” $1 -a “-e” $2 ] ||{ #判断后面的两个文件是否存在
echo “Userlist or passlist is not exist!”
exit 1
}&&{
if [ “wc -l $1 | cut -d ' ' -f 1
” -ne “wc -l $2 | cut -d ' ' -f 1
” ] #判断两个文件中的行数是否相等
then echo “The number of users is not equal to the number of password”
exit 1
else
H=1
for AA in cat $1
do useradd $ AA &> /dev/null #创建用户,如果创建成功,执行以下操作
if [ “$ ?” != “0” ]
then echo “$ AA is exist!!”
else P=$[H++]
BB=cat $2 | head -n $P | tail -n 1
echo $ BB | passwd --stdin $ AA &> /dev/null #上传给用户对应行的密码
echo -e “\033[31m$AA creation success\033[0m”
fi
done
fi
}
SHELL中的运算
运算方式及运算符号
+, - 加法,减法
*, / , % 乘法,除法,取余
** 幂运算
++ , – 自增加,自减少
<,<=,>,>= 比较符号
= , += , -= , *= , /= , %= 赋值运算 例如:a+=1 相当于 a=a+1
SHELL 中常用的运算命令
(()) 用与整数运算
let 用于整数运算,与 (()) 类似 let A=1+1
expr 用于整数运算,功能相对较多 echo expr 3+4
bc linux 下的计算器,适合整数及小数运算
bc <<EOF
7.7+4.2
EOF
$ [] 用户整数运算 echo $[ 2 + 5 ]
echo $A
请用运算和已经学过的 shell 语句写一个 1 分 10 秒倒计时的脚本:
read -p “Please input minute:” MIN #输入分钟
read -p “Please input second:” SEC #输入秒
((P= $MIN*60+ $SEC)) #计算所有秒数
for ((;P>0;P–)) #循环,自减,直到P为0
do
((MIN= $P/60)) #总秒数除以60为分钟
((SEC= $P%60)) #总秒数对60取余为秒
echo -ne " $MIN: $SEC " #输出时间
echo -ne “\r” #覆盖上一个时间
sleep 1 #睡1秒
done
利用以上命令制作一个计算器要求如下
执行 Calculator.sh 后显示
请输入您要操作的数字:
请输入要操作的运算:
请输入要操作的第二个数字 :
执行后显示操作后的数值:
read -p “请输入您要操作的数字:” N1
read -p “请输入要操作的运算:” C
read -p “请输入要操作的第二个数字:” N2
case $ C in #匹配字符
+) #匹配为+
echo $ [$ N1+$ N2] #两数相加
;;
-) #匹配为-
echo $ [$ N1-$ N2] #第一个数减第二个数
;;
’ * ') #匹配为*
echo $ [$ N1*$ N2] #两数相乘
;;
‘/’) #匹配为/
echo $ [$ N1/$ N2] #第一个数除以第二个数
;;
'* * ') #匹配为* *
echo $ [$ N1**$ N2] #求第一个数的第二个数次方
;;
*)
echo “Please input +|-| * |/|**:” #匹配为其他,全部报错
esac