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”。
分析:

    #!/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

原文地址:http://blog.51cto.com/13803030/2145122

时间: 2024-10-10 09:42:00

shell中的算术运算的相关文章

Shell脚本学习二:Shell中的算术运算

Linux中有四种算术运算,分别是expr,let,$[],$(()). 下面分别介绍一下这四种算术运算的使用方法 一.expr的用法 [[email protected] ~]# expr 1 + 2 3 [[email protected] ~]# expr 1 - 2 -1 [[email protected] ~]# expr 8 + 6 14 [[email protected] ~]# expr 8 - 6 2 [[email protected] ~]# expr 8 \* 6 4

【shell】shell中各种括号的作用()、(())、[]、[[]]、{}

1.(())使用语法: ((表达式))用来扩展Shell中的算术运算,以及赋值运算,扩展for,while,if条件测试运算. 注意点: 1.在双括号结构中,所有的表达式可以像c语言一样,如a++,b-- 2.在双括号结构中,所有变量可以不加入$符号前缀,也可以加入. 3.在双括号可以进行逻辑运算,四则运算,而且运算符合数值之间可以没有空格,也可以有空格. 4.双括号结构扩展了for,while,if条件测试运算. 5.支持多个表达式运算,各个表达式之间用逗号,分开. 6.使用[]时必须保证运算

[ SHELL编程 ] shell中各种括号的使用方法

转载自:http://www.jb51.net/article/60326.htm 在这里我想说的是几种shell里的小括号,大括号结构和有括号的变量,命令的用法,如下:1.${var} 2.$(cmd) 3.()和{} 4.${var:-string},${var:+string},${var:=string},${var:?string} 5.$((exp)) 6.$(var%pattern),$(var%%pattern),$(var#pattern),$(var##pattern)现在分

shell中if条件字符串、数字比对,[[ ]]和[ ]区别

shell中if条件字符串.数字比对,[[ ]]和[ ]区别 引用: http://www.51testing.com/?uid-7701-action-viewspace-itemid-13731 http://blog.csdn.net/sunboy_2050/article/details/6836382 shell 括号 学习shell的时候总是被shell里的条件判断方式搞得头疼,经常不知道改 用[],[[]],(())还是test,let,而很少有书把它们的关系讲解的很清楚(应该是我

shell中的变量及shell条件判断

Shell 基础之变量和条件判断 一.shell概述 1.shell概述: shell是一个命令行的解释器,为用户提供了一个向Linux内核发送请求以便运行程序的界面系统及程序,用户可以用shell来启动.挂起.停止甚至编写一些程序,shell还是一个功能强大的编程语言,shell是解释性的脚本语言,在shell中可以直接调用Linux命令. 2.shell脚本的用途 (1)自动化常用的命令 (2)执行系统管理和故障排除 (3)执行简单的应用程序 (4)处理文本或文件 3.shell的分类 (1

二、Shell中的变量

变量是任何程序或脚本的重要组成部分.变量为程序或脚本访问内存中的可被修改的一块数据提供了简单的方式.Linux Shell中的变量可以被指定为任意的数据类型.Shell中有两种变量的类型:系统变量(环境变量)和用户自定义的变量(本地变量或Shell变量). 环境变量:作用域为当前shell进程及其子进程:环境变量一般均为大写.常用的环境变量有: 系统变量 含义 BASH_VERSION 保存bash实例的版本 DISPLAY 设置X display名字 EDITOR 设置默认的文本编辑器 HIS

shell中if判断条件中使用[],[[]],(())还是test,let的比较

学习shell的时候总是被shell里的条件判断方式搞得头疼,经常不知道改 用[],[[]],(())还是test,let,而很少有书把它们的关系讲解的很清楚(应该是我悟性差或是看书太少),今天总结一下,基础的东西如它们 的使用方法不再赘述,重点说说它们的区别的使用时应该注意的地方. 先说[]和test,两者是一样的,在命令行里test expr和[ expr ]的效果相同.test的三个基本作用是判断文件.判断字符串.判断整数.支持使用与或非将表达式连接起来.要注意的有: 1.test中可用的

关于 Shell中函数的返回值 问题

# !/bin/sh sum() { echo $(($1+$2)) return $(($1-$2)) } sum $1 $2 c=$(sum $1 $2) echo $? echo $c 执行命令:./bashTest 11 1 运行结果是: 12 -- sum $1 $2的结果 10 -- echo $?的结果,因为return的值为10 12 --  echo $c的结果,值为12,所以c并不会被附上return的值,echo $c时调用了sum函数,所以打印了12 我们对shell中的

Shell中的运算符

Shell中也可以实现基本算术运算,以及位运算. 我们总结起来有如下几点:     1)基本的算术运算符:+.-.*./.**都支持,最后的**是幂运算:     2)算术运算要和一些命令结合才能使用,如expr`...`命令,$((...))命令,$[...]命令,let命令,注意:expr后面是反引号:     3)一定要注意所有运算符两边都要有空格,比如result=`expr 2 + 3`就是正确的,如果是result=`expr 2+3`就是错误的!其余的运算符也是需要空格隔开!!