条件判断练习_2019.03.14_10:00-11:30_mage_Linux_log

本文深入探讨了Shell脚本在Linux环境下的应用实践,包括算术运算、用户信息处理、历史命令检查等实用技巧,旨在提升读者的脚本编写能力。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

练习

判断当前系统上是否有用户的默认shell为bash;
如果有,就显示有多少这类用户;否则,就显示没有这类用户

	#!/bin/bash
	grep "\\<bash\$" /etc/passwd &> /etc/null
	STAVAL=$?
	if [ $STAVAL -eq 0 ]; then
		USERS=\`grep "\\<bash\$" /etc/passwd | wc -l\`
		echo "$USERS users' shell is bash."
	else
		echo "No such users."
练习

判断当前系统上是否有用户的默认shell为bash;
如果有,就显示其中一个的用户名;否则,就显示没有这类用户
判断当前系统上是否有用户的默认shell为bash

练习

写一个脚本,判断一个用户其UID与GID是否一样,如果一样,就显示此用户为“good guy”;否则,就显示为“bad guy”

#!/bin/bash
USERNAME=user1
USERID=\`id -u $USERNAME\`
GROUPID=\`id -g $USERNAME\`
if [ $USERID -eq $GROUPID ]; then
	echo "Good guy."
else
	echo "Bad guy"

进一步要求;不使用id命令获取其id号:
???????

练习

给定一个用户获取其密码警告期限:
而后判定用户最近一次修改密码时间距今天此刻是否已经小于警告期限;提示:算术运算$[ $A - $B ]:表示变量A的值减去变量B的值的结果;如果小于就显示Warning;否则,显示OK。
使用bc命令;date取得今天为止经过的秒数:
date +%s
????????
TIMESTAMP=date +%s
let USEDAYS=$TIMESTAMP/86400
echo $USERDAYS 今天距离1970年00:00:00多少天
查看/etc/passwd字段定义,用密码最长期限减去修改密码时刻到现在的天数
再和密码过期警告天数比较
圆整:丢弃小数点后面的内容

#!/bin/bash
WAR=\`grep "^stevenux" /etc/passwd | cut -d: -f6\`
SEC=date +%s
DAY=`expr $SEC/86400`
LONG=\`grep "^stevenux" /etc/passwd | cut -d: -f5\`
PSMOD=\`grep "^stevenux" /etc/passwd | cut -d: -f3\
REMAIN=$[$LONG - $[\$DAY - $PSMOD]]`
if [ $REMAIN -eq $WAR]; then
echo "Warning!"
else
echo "OK"
fi
练习

写一个脚本,判定命令历史中的总条目是否大于1000;如果大于,则显示“some command will gone.”;否则,显示“OK”
运行history结果给变量,取变量值行数,和1000比较
history默认保存1000条历史:$HISTSIZE;文件中也是1000条:$HISTFILESIZE
history | tail -1 | cut -d’ ’ -f1
前面有空格,取不出来
history | tail -1 | cut -d’ ’ -f2
可以取到1000条以后的行

shell中如何进行算术运算?

1.let 算术运算表达式, 无空格
let c=$A+$B
2.$[算术运算表达式]; 无空格
D= $ [$ A+$ B]
3.$ ((算术运算表达式)); 无空格
C=$(( $ A+$ B))
4.expr 算术运算表达式;表达式中各操作数及运算符之间要有空格,而且要使用命令引用
c=`expr $A + $B`

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值