码迷,mamicode.com
首页 > 系统相关 > 详细

linux--shell编程(三)条件判断及算术运算

时间:2017-07-14 10:14:31      阅读:229      评论:0      收藏:0      [点我收藏+]

标签:man   错误   passwd   空白   pass   使用   系统   head   blog   

练习:写一个脚本
判断当前系统上是否有用户的默认shell为bash;
如果有,就显示有多少个这类用户;否则,就显示没有这类用户;

#!/bin/bash
#
grep \<bash$ /etc/passwd &> /dev/null
RETVAL=$?
if [ $RETVAL -eq 0 ]; then
USERS=`grep "\<bash$" /etc/passwd | wc -l`
echo "hava $USERS users use default bash"
else
    echo "没有默认使用bash的用户"
fi

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

#!/bin/bash
#
grep \<bash$ /etc/passwd &> /dev/null
RETVAL=$?
if [ $RETVAL -eq 0 ]; then
USER=`grep "\<bash$" /etc/passwd | head -1 | cut -d: -f1`
echo "user $USER  use default bash"
else
    echo "没有默认使用bash的用户"
fi

练习:写一个脚本
给定一个文件,比如/etc/inittab
判断这个文件中是否有空白行;
如果有,则显示其空白行数;否则,显示没有空白行。

#!/bin/bash
grep "^$" /etc/inittab &> /dev/null
RETVAL=$?
if [ $RETVAT -eq 0 ]; then
    echo "没有空白行"
else
    NUM=`grep "^$" /etc/inittab | wc -l`
    echo "有$NUM空白行"
fi

练习:写一个脚本
给定一个用户,判断其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"
fi
#!/bin/bash
#
USERNAME=user1
USERID=`grep "^$USERNAME\>" /etc/passwd | cut -d: -f3`
GROUPID=`grep "^$USERNAME\>" /etc/passwd | cut -d: -f4`
if [ USERID -eq GROUPID ]; then
echo "good guy"
else 
echo "bad guy"
fi

shell中如何进行算术运算

A=3

B=6

1. let算术表达式

    let C=$A+$B

2. $[算术表达式]

    C=$[$A+$B]

3. $(())

    C=$(($A+$B))

4. expr 算术表达式,表达式中各操作数及运算符之间要有空格,而且要使用命令引用

    C=`expr $A + $B`

exit:退出脚本

exit #

错误码可以是1-255,也可以省略

 

练习:写一个脚本
给定一个用户,获取其密码警告期限;
而后判断用户密码使用期限是否已经小于警告期限;
提示:计算方法,最长使用期限减去已经使用的天数即为剩余使用期限;

如果小于,则显示“Warning”;否则,就显示“OK”。

圆整:丢弃小数点后的所有内容#!/bin/bash#

#!/bin/bash
USER
=root
id -u $USER &> /dev/null
RETVAL=$?
if [ $RETVAL -eq 0 ]; then WARNDATE
=`grep "^$USER\>" /etc/shadow | cut -d: -f6` LATESTDATE=`grep "^$USER\>" /etc/shadow | cut -d: -f3` MAXDATE=`grep "^$USER\>" /etc/shadow | cut -d: -f5` MILLS=`date +%s` NOWDATEUSED=`expr $MILLS / 86400` SY=$[$MAXDATE - $[$NOWDATEUSED - LATESTDATE]] if [ $SY -gt $WARNDATE ];then echo "OK" else echo "Warning" fi
else
exit
fi
#!/bin/bash
USER=root
if ! grep "^$USER\>" /etc/shadow; then
    exit 1
fi
WARNDATE=`grep "^$USER\>" /etc/shadow | cut -d: -f6`
LATESTDATE=`grep "^$USER\>" /etc/shadow | cut -d: -f3`
MAXDATE=`grep "^$USER\>" /etc/shadow | cut -d: -f5`
MILLS=`date +%s`
NOWDATEUSED=`expr $MILLS / 86400`
SY=$[$MAXDATE  - $[$NOWDATEUSED - LATESTDATE]]
if [ $SY -gt $WARNDATE ];then
    echo "OK"
else
    echo "Warning"
fi

 

练习:写一个脚本
判定命令历史中历史命令的总条目是否大于1000;如果大于,则显示“Some command will gone.”;否则显示“OK”。

 

linux--shell编程(三)条件判断及算术运算

标签:man   错误   passwd   空白   pass   使用   系统   head   blog   

原文地址:http://www.cnblogs.com/ckh2014/p/7168250.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!