Linux Shell

本文介绍四中常用计算运算表达expr、(())、let、$[],整数运算表单时推荐使用(())或let。

expr

整数计算

语法: expr 表达式

说明:支持简单的运算符 (+ - * 、 %)

表达式内不支持赋值,结果直接输出。

只能支持一个表达式。

表达式引用变量需要使用$符号。

表达式中小括号、乘号需要转义,并且小括号和预算符两侧都需要留有空格。

#!/bin/bash
num1=2

:<<!
计算 (1+3)*3
小括号、乘号需要转义
小括号和运算符两个必须保留空格
!
expr \( 1 + 3 \) \* 3 / 2

# 引用变量需要使用$
expr 1 + $num1


字符串处理

获取字符串传长度

语法:expr length “String”

# expr length "hello world"
11


截取字符串

语法:expr substr “string” start end

其中start和end都从1开始计数

# expr substr "hello world" 1 2
he


查询chars在字符串string第一次出现的位置

语法:expr index “string” chars

chars 如果是单个字符的话,会返回该字符所在位置,从1开始。

如果为多字符,将会被拆分成单个字符,统计每个字符所在位置,返回最小的值。

# expr index "hello world" we
2


支持简单表达式

语法:

expr match 字符串 正则表达式

expr 字符串:正则表达式

返回匹配字符串的总长度


(())

语法: ((表达式))

说明:

表达式内支持赋值,结果不输出。

支持多个表达式。

特殊字符不需要转义。

引用变量可以不是用$。

运算符两个可以不保留空格。

#!/bin/bash
num1=2

# 增加$获取整个表达是的值
value=$((1+1))
echo value=$value

# 表达式内支持赋值
((value1=1+3))
echo value1=$value1

# 支持多个表达式
((value2=2+3,value3=2*4))
echo value2=$value2 value3=$value3

# 引用变量不要使用$
((value4=num1+1))
echo value4=$value4

# 支持逻辑运算
value5=$((1<2&&5>4))
echo value5=$value5


let

赋值表达式,支持简单整数运算。

语法:let 赋值表达式

说明:

表达式内支持赋值,结果不输出。

支持多个表达式。

特殊字符不需要转义。

引用变量不需要使用$。

运算符两个可以不保留空格。

#!/bin/bash

num1=1

# 结果不输出
let 1+1

# 支持多表达式、不需要转义特殊字符
let value1=1+1 value2=(1+2)*2 
echo value1=$value1 value2=$value2

# 引用变量不需要使用$
let value3=num1+1
echo value3=$value3


$[]

支持简单整数运算。

语法:$[表达式]

说明:

表达式内支持赋值,结果不直接输出,直接返回所以需要使用变量接收参数,否则将作为命令执行。

只支持一个表达式。

特殊字符不需要转义。

引用变量不需要使用$。

运算符两个可以不保留空格。

#!/bin/bash

num1=1

# 结果不输出,直接返回所以需要使用变量接收参数,否则将作为命令执行。
$[1+1]

# 不需要转义特殊字符
value1=$[(1+2)*2] 
echo value1=$value1 

# 引用变量不需要使用$
value3=$[2+num1]
echo value3=$value3

# 表达式内支持赋值
value5=$[value4=1+5]
echo value4=$value4 value5=$value5


expr 文章推荐:https://www.cnblogs.com/f-ck-need-u/p/7231832.html



转载请指明出处!http://www.miselehe.com/article/view/131