天天看点

bash之三 脚本练习以及算术运算

练习:写一个脚本

判断当前系统上是否有用户的默认shell为bash;

    如果有,就显示有多少个这样的用户,否则就显示没有这类用户

#!/bin/bash

acount=`grep "\<bash$" /etc/passwd |wc -l`

if [ $acount -gt 0 ];then

echo "there have $acount such users"

else

echo "no  such  users"

fi

    给定一个文件,比如/etc/inittab

    判断这个文件中是否有空白行

    如果有,则显示其空白行数;否则,显示没有空白行;

i=` grep  "^$"  /etc/inittab|wc -l`

if [ $i -gt 0 ];then

echo "there are $i blank lines"

echo "no blank lines"

    给定一个用户,判断其UID与GID是否相同

    如果一样,就显示此用户为“good guy”;否则显示为“bad guy”;

[ `id -u user1`  -eq  `id -g user1 ` ]&& echo  'good guy' ||echo "bad guy "

    给定一个用户,获取起密码警告期限;

    而后判断用户最近一次修改密码时间距其最长使用期限是否已经小于警告期限;

    如果小于。则显示“warning”;否则,就显示“ok”;

        提示:算数运算的方法$[$A-$B],表示变量A的值减去变量B的值

if ! id $1 &>/dev/null;then 

echo  "user $1 no exists!"

wtime=`grep "$1" /etc/shadow|cut  -d:  -f6`

ctime=`grep "$1" /etc/shadow|cut  -d:  -f3`

utime=`grep "$1" /etc/shadow|cut  -d:  -f5`

now=`date +%s/86400|bc`

ltime=$[$utime-$[$now-$ctime]]

if [ $ltime -lt $wtime ];then

echo "warning!"

echo "ok"

    判定命令历史中历史命令的总条目是多少?

[root@logstach ~]# history |tail -1|cut -d' ' -f3

568

        注意:这里不能使用history |wc -l 来计算,因为历史命令最多能存储环境变量HISTSIZE的大小,当超过时则会溢出,我们题目的意思是要统计已经使用过的历史命令。

shell中如何进行算数运算:

A=3

B=7

1、 let 算数运算表达式

        let  C=$A+$B

2、 $[算术运算表达式]

        $[$A+$B]

3、 $((算术运算表达式))

        $(($A+$B))

4、 expr 算术运算表达式、表达式中各操作以及运算符之间必须有空格,且赋值时需要命令引用

    c=`expr $A +  $B `

本文转自biao007h51CTO博客,原文链接:http://blog.51cto.com/linzb/1732473 ,如需转载请自行联系原作者