shell中的计算

shell中变量的数值计算常见的命令

(())、let、expr、bc、$[]

一、(())

示例:

    [[email protected] ~]# echo $((1+2))
    3

二、let

示例:

    [[email protected] ~]# let a=1+2
    [[email protected] ~]# echo $a
    3

三、expr

示例:

1、

    [[email protected] ~]# expr 1+2
    1+2
    [[email protected] ~]# expr 1 + 2
    3

2、

    [[email protected] ~]# expr 2 \* 2
    4

3、

    [[email protected] ~]# expr $[2+3]
    5

特殊用法:

判断文件扩展名示例:

    [[email protected] ~]# vim `which ssh-copy-id `
    # 判断文件扩展名
    # check if we have 2 parameters left, if so the first is the new ID file
    if [ -n "$2" ]; then
      if 
        xpr "$1" : ".*\.pub"> /dev/null ; then
          ID_FILE="$1"
      else
          ID_FILE="$1.pub"
      fi
        shift         # and this should leave $1 as the target name
    fi

判断输入的是整数还是非整数示例:

    [[email protected] script]# cat expr.sh 
    #!/bin/bash
    while true
    do
        read -p "Pls input :" a
        expr $a + 0 > /dev/null 2>&1
        [ $? -eq 0 ] && echo int || echo chars
    done
    [[email protected] script]# sh expr.sh 
    Pls input :2
    int
    Pls input :3
    int
    Pls input :a
    chars
    Pls input :i
    chars
    Pls input :>
    chars
    Pls input :

判断字符的长度示例:

    [[email protected] script]# chars=`seq -s " " 100`
    [[email protected] script]# echo ${#chars}
    291
    [[email protected] script]# echo $(expr length "$chars")
    291

四、bc

    ## 普通计算
    [[email protected] script]# bc
    bc 1.06.95
    Copyright 1991-1994, 1997, 1998, 2000, 2004, 2006 Free Software Foundation, Inc.
    This is free software with ABSOLUTELY NO WARRANTY.
    For details type `warranty‘. 
    1+2
    3
    1.3+2
    3.3
    2*3
    6
    ^C
    (interrupt) Exiting bc.
    ## 在命令行操作
    [[email protected] script]# echo 1+1|bc
    2

    #进制转换
    [[email protected] script]# echo "obase=2;82"|bc
    1010010

特殊示例:

    [[email protected] script]# echo `seq -s ‘+‘ 10`=`seq -s "+" 10 |bc`
    1+2+3+4+5+6+7+8+9+10=55
时间: 2024-10-12 04:17:18

shell中的计算的相关文章

Shell中数学计算/运算

shell中的赋值和操作默认都是字符串处理. 1)使用let(只能进行整数运算)var=1let "var+=1"echo $var输出结果为2 注意:a)let几乎支持所有的运算符b)方幂运算应使用“**”c)参数在表达式中直接访问,不必加$d)一般情况下算数表达式可以不加双引号,但是若表达式中有bash中的关键字则需加上e)let后的表达式只能进行整数运算 2)使用(())var=1((var+=1))echo $var输出结果为2注意:(())的使用方法与let完全相同 3)使用

shell 中数学计算总结

1.错误方法举例 a) var=1+1 echo $var 输出的结果是1+1,悲剧,呵呵 b) var=1 var=$var+1 echo $var 输出结果是1+1,依然悲剧,呵呵 2.正确方法 1)使用let var=1 let "var+=1" echo $var 输出结果为2,这次没有悲剧 注意: a)经我测试let几乎支持所有的运算符,在网上看到一篇文章说"let不支持++.--和逗号.(.)",但经我测试自加.自减.以及括号的优先级都得到了很好的支持

shell中变量计算

year=44 1.let,不需要$引用变量 let m=year+3 echo $m 2.(()) m=$((year+3)) 3.[  ],注意两边一定要有空格 m=$[ year+3 ] 4. bc,可以实现高精度的运算:echo 3+4|bc m=$(echo ${year}+12|bc) 5. expr,一定要注意不要漏掉空格 m=`expr $year + 2`

在 shell 中使用 vi 模式

作为一名大型开源社区的参与者,更确切地说,作为 Fedora 项目的成员,我有机会与许多人会面并讨论各种有趣的技术主题. 我最喜欢的主题是"命令行"或者说 shell,因为了解人们如何熟练使用 shell 可以让你深入地了解他们的想法,他们喜欢什么样的工作流程,以及某种程度上是什么激发了他们的灵感. 许多开发和运维人员在互联网上公开分享他们的" dot 文件"(他们的 shell 配置文件的常见俚语),这将是一个有趣的协作机会,让每个人都能从对命令行有丰富经验的人中

shell中的重定向(输入输出)

注意:不同版本的Linux会有所区别,不过大同小异 Linux 命令默认从标准输入设备(stdin)获取输入,将结果输出到标准输出设备(stdout)显示.一般情况下,标准输入设备就是键盘,标准输出设备就是终端,即显示器. 输出重定向 命令的输出不仅可以是显示器,还可以很容易的转移向到文件,这被称为输出重定向. 命令输出重定向的语法为: $ command > file 这样,输出到显示器的内容就可以被重定向到文件. 例如,下面的命令在显示器上不会看到任何输出: $ who > users 打

[ 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中$(( )) 与 $( ) 还有${ }的区别

http://blog.chinaunix.net/uid-14351756-id-2820651.html $( ) 与 ` ` (反引号)在 bash shell 中,$( ) 与 ` ` (反引号) 都是用来做命令替换用(command substitution)的. 所谓的命令替换与我们第五章学过的变量替换差不多,都是用来重组命令行:* 完成引号里的命令行,然后将其结果替换出来,再重组命令行.例如:[code]$ echo the last sunday is $(date -d "la

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,而很少有书把它们的关系讲解的很清楚(应该是我

linux shell中的比较符号与特殊符号介绍

shell字符串比较.判断是否为数字  二元比较操作符,比较变量或者比较数字.注意数字与字符串的区别.  整数比较  -eq 等于,如:if [ "$a" -eq "$b" ]  -ne  不等于,如:if [ "$a" -ne "$b" ]  -gt 大于,如:if [ "$a" -gt "$b" ]  -ge 大于等于,如:if [  "$a" -ge "