shell中的算术运算

shell中的算术运算方式有很多种,如,A=1,B=2,那么要怎么计算A+B的值了? 不能简单的$A+$B,如果这样运算的话,得出的结果为1+2,显然不是我们想要的结果,要的出结果为3,我们有一下几中方法:

    1.let C=$A+$B,echo $C 输出的值就为3
    2.C=$((  $A+$B  ))
    3.C=$[$A+$B]
    4.C=`expr $A + $B` (需要注意+号与两边的数值之间要有空格隔开,否则C的结果为1+2)
    5.。。。

练习:写一个脚本
给定一个用户,获取其密码警告期限;而后判断用户密码剩余使用期限是否已经小于警告期限;( 提示:计算方法,最长使用期限减去已经使用的天数即为剩余使用期限;然后剩余天数和警告天数比较)如果小于,则显示“Warning”;否则,就显示“OK”。
分析:
shell中的算术运算

    #!/bin/bash
    user="student"
    mast_time=`grep "^$user\>" /etc/shadow | cut -d: -f5` #最长时间
    now_time=$((`date +%s`/86400))    #现在时间距1970-1-1有多少天
    modify_time=`grep "^$user\>" /etc/shadow | cut -d: -f3`   #最近一次修改密码时间距1970-1-1过了多少天
    use_time=$(($now_time-$modify_time)) #已经使用了的时间
    remain_time=$(($mast_time-$use_time)) #剩余时间
    warning_time=`grep "^$user\>" /etc/shadow | cut -d: -f6` #警告天数

    #打印出这些时间
    echo "mast  $mast_time"
    echo "now $now_time"
    echo "modify  $modify_time"
    echo "use $use_time"
    echo "remain $remain_time"
    echo "warning $warning_time"

    if [[ $remain_time -le $warning_time ]];then
        echo "warning"
    else
        echo "ok"
    fi

猜你喜欢

转载自blog.51cto.com/13803030/2145122