Linux shell 编程(六):运算

运算

表达式

表达式包含在或(())[]内,

  • 算数表达式:(())

    • ((expression))
    • 这个表达式是根据算术计算的规则来计算的。相当于let expression
  • 条件计算表达式:[]
    • [expression]
    • 这是内置命令test的同义词,以[开头,以]结尾。

在表达式中可以进行进制转换:$((NUMBER#SCALE)),$((10#8)=>8

要得到计算结果,需要在表达时前面加$符号,如:$[expression]$((expression))

  • 区别

    • 这两种的区别在于((expr))可以在shell中执行,可以对变量进行赋值运算,而不需要在前面加$号,如果表达式执行成功则执行结果为成功,否则是不成功,因此它可以作为if的判断表达式。

命令计算表达式

在Linux中可以使用命令来计算表达式,如exprlet命令。

expr

expr命令用于计算表达式并将其标准输出。

# Usage: expr EXPRESSION
# expression
# 运算操作符前后要有空格
  ARG1 | ARG2       位或运算

  ARG1 & ARG2       位与运算

  ARG1 < ARG2       ARG1 小于 ARG2
  ARG1 <= ARG2      ARG1 小于等于 ARG2
  ARG1 = ARG2       ARG1 等于 ARG2
  ARG1 != ARG2      ARG1 不等于 ARG2
  ARG1 >= ARG2      ARG1 大于等于 ARG2
  ARG1 > ARG2       ARG1 大于 ARG2

  ARG1 + ARG2       加法
  ARG1 - ARG2       减法

  ARG1 * ARG2       乘法 使用乘法时,操作符*应该被转义:\*
  ARG1 / ARG2       除法
  ARG1 % ARG2       取余数

  STRING : REGEXP   REGEXP在STRING中的固定匹配

  match STRING REGEXP        与 STRING : REGEXP 相同,如果正则与字符串相匹配则返回匹配的字符个数,否则返回0
  substr STRING POS LENGTH   字符串截取,POS时开始位置,POS最小为1,LENGTH是截取长度
                             # 如:
                                expr substr raojinlin 1 3
                                上面命令将输出:rao
  index STRING CHARS         CHARS 是字符,STRING是字符串,这个表达式输出字符在字符串中第一次出现的位置,如果字符不在字符串中则输出0
  length STRING              字符串的长度
  + TOKEN                    将令牌解释成字符串,向`match`或`/`这样的操作符     

  ( EXPRESSION )             EXPRESSION的值

let

let用来计算算数表达式,let不会将计算结果标准输出,而是将结果直接赋值给了变量。

语法:let arg [arg]

let计算每个ARG作为算术表达式。对固定宽度的整数进行评估,不检查是否溢出,但将0除格并标记为错误。下面的操作符列表分组为等优先级操作符的级别。这些等级是按优先顺序排列的。

  • let 参数

    
        id++, id--  变量自增和自减,运算前先调用变量在运算,如果变量不存在则创建一个
        ++id, --id  变量自增和自减,运算前先运算在调用,如果变量不存在则创建一个
        -, +        整数和负数
        !, ~        一个布尔操作符,用于将操作的值强制转换为布尔值并取反;位反运算
        **          幂运算
        *, /, %     乘法,除法,取余数
        +, -        加法,减法
        <<, >>      左移运算和右移运算,let执行结果为表达式的计算结果
        <=, >=, <, >    比较操作符,let执行结果为表达式的计算结果
        ==, !=      等于,不等于
        &       位与 AND
        ^       位异或 XOR
        |       位或 OR
        &&      逻辑与 AND
        ||      逻辑或 OR
        expr ? expr : expr
                条件操作,三元运算
        =, *=, /=, %=,
        +=, -=, <<=, >>=,
        &=, ^=, |=  赋值运算

## 运算符

`ID++ ID--‘
变量自增和自减
运算前先调用变量在运算

`++ID --ID‘
变量自增和自减
运算前先运算在调用变量

`- +‘
正数负数

`! ~‘
一个布尔操作符,用于将操作的值强制转换为布尔值并取反。
位反运算

`**‘
求幂运算

`* / %‘
乘、除、余数

`+ -‘
算数加法和减法

`<< >>‘
左移运算
右移运算

`<= >= < >‘
比较操作

`== !=‘
等于和不等于

`&‘
位与运算

`^‘
位异或运算

`|‘
位或运算

`&&‘
逻辑与

`||‘
logical OR

`expr ? expr : expr‘
三元表达式
如果第一个表达式为真,这执行第二个表达式,否则执行第三个表达式

`= *= /= %= += -= <<= >>= &= ^= |=‘
赋值运算

`expr1 , expr2‘
逗号


## 示例

* ```expr```
[email protected]:~# expr 1 + 1
2
[email protected]:~# expr 1 \* 1
1
[email protected]:~# expr index raojinlin r
1
[email protected]:~# expr substr raojinlin 3 4
ojin
[email protected]:~#
```
  • let

    [email protected]:~# a=1
    [email protected]:~# let a++
    [email protected]:~# let a*=2
    [email protected]:~# echo $a
    4
    [email protected]:~#
    
  • (())
    # a 为上面let示例中的a变量,其值为2
    [email protected]:~# echo $((a+1)) # shell将会解释a变量
    5
    [email protected]:~# echo $((a+1 * 2))
    6
    [email protected]:~# echo $((a+1 * 2 / 2))
    5
  • []
    [email protected]:~# echo $[a+4]
    8
    [email protected]:~# echo $[23+4]
    27
    [email protected]:~# echo $[23 <=4]
    0
    

原文地址:http://blog.51cto.com/jlnetc/2106096

时间: 2024-08-30 13:41:04

Linux shell 编程(六):运算的相关文章

Linux Shell编程之五字符串的处理

shell编程之字符串处理 在 shell 中,由于是一种弱类型的语言,在没有事先申明变量类型的情况下,所有的变量都是字符串.所以对字符串的处理就显得相当重要了. 下面介绍常见的对字符串处理的操作. 一.字符串切片 ${string_var:offest:length},类似于数组元素的提取. # 这里的string_var是一个变量,offest 是字符串的开始偏移量,length是切去字符串的长度 var=dhcpd:x:177:177:DHCP server:/:/sbin/nologin

Linux Shell编程之二选择结构

Shell编程学习之二 一.bash的条件测试 测试方法或者说测试书写: test EXPR [ EXPR ] [[ EXPR ]] 例如:测试变量 User_Name 的之是否为root test $User_Name="root" [ $User_Name == "root" ] [[ $User_Name == "root" ] 根据比较时操作数的类型,测试类型分为: 测试类型 运算符 运算符所代表的意义 示例 整形测试 -gt -lt -

Linux Shell 编程实战技巧

目前,越来越多的企业应用会部署在 Linux 系统上的,而 Linux Shell 脚本可以极大地帮助我们完成这些应用的运维任务.这使得 Linux Shell 开发技能成为开发人员的一项重要的.有竞争力的技能.本文就笔者的实际开发经验,以 Korn Shell 为例分享了脚本开发中的常见问题及相关技巧. 避免定时任务脚本的常见问题 很多脚本在实际使用的时候往往是以定时任务的方式运行,而非手工运行.但是实现同样功能的脚本在这两种运行方式下可能遇到的问题不尽相同. 以定时任务方式运行的脚本往往会遇

关于linux shell编程,alias rm=&#39;cp [email&#160;protected] ~/backup; rm [email&#160;protected]&#39;

书上的这个例子需要在ubuntu的低版本的系统才支持,现在基本上都不支持了,想实现也很简单自己写一个脚本先备份再删除. alias也只是做了一次替换alias rm='cp [email protected] ~/backup; rm [email protected]' rm text.txt被转换成了cp  [email protected] ~/backup; rm [email protected] text.txt即cp  ~/backup; rm  text.txt可以看到text.

Linux shell变量数学运算

Linux shell变量数学运算 Abstract : 1)  Linux shell 中使用 let , [ ] ,(( )) 三种运算符操作 shell 变量进行简单的基本运算:2)Linux shell 中使用 expr 与 bc 两个程序实现高级运算: 1, Linux shell 变量的基本运算 数值作为常规变量直接赋值给变量,并且以字符串形式保存. 1.1 let 命令可以用于直接执行基本操作: 当我使用 let 的时候,我们不使用 $ 符号引用变量. no1=7;no2=8; e

京峰Linux Shell编程从入门到精通

课程介绍:Shell是系统的用户界面,提供了用户与内核进行交互操作的一种接口.它接收用户输入的命令并把它送入内核去执行. -------------------课程目录------------------- <Shell编程从入门到精通> ├1.linux下shell编程基础入门_(new).mp4├2.Shell编程之变量及LAMP导航菜单编写_(new).mp4├3.Shell编程之IF条件语句各种案例演练_(new).mp4├4.使用if条件语句编写MySQL备份脚本_(new).mp4

linux shell编程

1.什么是shell 2. 还是hello world程序 3. shell中的变量 3.1 系统变量 3.2 用户定义变量 3.2.1 用户定义变量规则 3.2.3 shell如何使用变量 3.2.3 全局变量 vs 局部变量 4. shell编程中的控制结构 4.1 条件判定 4.1.1 简单条件判定 4.1.2 组合判定 4.2  if - else 4.3 for 4.4 while 4.5 case 5. shell中的函数 5.1 函数声明和定义 5.2 函数调用 6. shell脚

Linux Shell编程基础

在学习Linux BASH Shell编程的过程中,发现由于不经常用,所以很多东西很容易忘记,所以写篇文章来记录一下 ls   显示当前路径下的文件,常用的有 -l 显示长格式  -a 显示所有包括隐藏  -R 显示文件夹内的内容  -c 按照最后一次修改时间排序  -t 按照修改时间排序输出 echo 显示  -n 不换行 touch  创建一个文件,或者修改文件的访问时间和修改时间 touch -a file 只更改访问时间 -m之更改修改实际那 -t指定特定时间 cp  复制文件 -a 保

Linux Shell编程入门

从程序员的角度来看, Shell本身是一种用C语言编写的程序,从用户的角度来看,Shell是用户与Linux操作系统沟通的桥梁.用户既可以输入命令执行,又可以利用 Shell脚本编程,完成更加复杂的操作.在Linux GUI日益完善的今天,在系统管理等领域,Shell编程仍然起着不可忽视的作用.深入地了解和熟练地掌握Shell编程,是每一个Linux用户的必修 功课之一. Linux的Shell种类众多,常见的有:Bourne Shell(/usr/bin/sh或/bin/sh).Bourne

“Linux Shell编程”视频学习笔记

一.Linux Shell基础编程 视频1 1.1.查看你系统shell信息 $ cat /etc/shell 命令可以获取Linux系统里面有多少种shell程序 $ echo $SHELL 命令可以查看当前你所使用的shell是哪一个 1.2.查看文件信息,ls $ ls -l 查看文件信息:文件类型.文件权限.文件硬链接数.文件所属用户.文件所属组.文件大小.文件最近修改时间.文件名 1.3.改变文件权限,chmod 只有root用户或者文件的所有者能改变文件的权限 例子:$ chmod