shell脚本中的运算

用户建立脚本

执行 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
在这里插入图片描述
在这里插入图片描述

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值