expr命令详解

计算字符串长度语法

expr length 字符串

# 例如:expr length “wyq”  返回:3

截取字符串语法

expr substr 字符串 start end

# 例如:expr substr “wyqshi”  2 4

获取第一个字符在字符串中出行的位置语法

expr index 被查找字符串 需要查找的字符

#注意,都是从1开始的

# 例如:expr index “wyqshi” q

正则表达式匹配1语法

expr match 字符串 正则表达式

# 正则表达式默认带有^  ,代表以什么开头

 .表示任意字符,*表示所有

#表示匹配q以前的所有任意字符

正则表达式匹配2语法

expr 字符串:正则表达式


(())命令详解

用于进行数学运算

运算操作符/命令说明

((a=1+6))

((b=a-1))

((c=a+b))

a=$((1+6))

b=$((a-1))

c=$((a+b))

((a>7 && b==c))
echo $((a+10))
((a=3+5,b=a+10))

注意:符号之间有无空格都可以

实例

需求

#计算a-1赋值给b
((b=a-1))


#计算变量a + 变量b 赋值给变量c
c=$((a+b))


#打印变量a,变量b,变量c的值
echo "a=${a},b=${b},c=${c}"


#$赋值写法
a=$((1+6)) b=$((a-1)) c=$((a+b))


#(())多个表达式计算赋值
((a=1+6,b=a-1,c=a+b))
echo "a=${a},b=${b},c=${c}"

#echo输出直接使用(())
echo "1+6=$((1+6))"


#(())用于逻辑表达式在if中使用
if ((a>7 && b==c))
then
        echo "a>7 && b==c 成立"
else
        echo "a>7 && b==c 不成立"
fi

总结:

括号内赋值:((变量名=整数表达式))

括号外赋值:变量名=$(())

多表达式赋值:((变量名1=整数表达式1,变量名2=整数表达式2,))

与if配合使用

let命令详解

在赋值上是最快速的,不能直接输出,不可以和条件判断一起使用

语法

let 赋值表达式

需求

#计算变量a-1赋值给变量b
let a=1+6
let b=a-1


#计算变量a + 变量b 赋值给c
let c=a+b


#打印变量a,b,c
echo "a=${a},b=${b},c=${c}"


#let多个表达式计算赋值
let a=1+6,b=a-1,c=a+b
echo "a=${a},b=${b},c=${c}"

小结:

let数字计算用法

作用:用于赋值,是最简洁的整数运算赋值命令

计算赋值用法:let 变量名=整数运算表达式

多个表达式计算赋值用法:let 变量名1=整数运算表达式1 变量名2=整数运算表达式2


$[]命令详解

只能进行整数运算,只能对单个表达式的计算求值与输出

语法

$[ 表达式 ]

可以对表达式进行计算,并得到结果

表达式内部不可以赋值给变量

示例

小结

expr

  优点:可以直接输出

  缺点:计算表达式里面引用变量使用$,特殊字符需要转义,只能计算一个表达式

(())     直接求值输出最推荐

  优点:直接输出,里面直接使用变量名,特殊字符不需要转义,多个表达式赋值

  缺点:需要获取值后才可以输出

let     赋值推荐

  优点:赋值简单,特殊字符不需要转义

  缺点:不可以直接输出

$[]

  优点:特殊字符不需要转义

  缺点:不能多表达式计算


bc命令

bc [options] [参数]

-l:使用标准数学库

-q:quiet ,不显示欢迎信息

示例:bc执行计算任务的文件

内置变量

变量名作用
scale

指定精度,即小数点后的位数,对计算结果指定保留小数,默认不适用小数部分

ibase

指定输入的数字的进制,默认为十进制

obase指定输出的数字的进制,默认为十进制
last 或者.获取最近计算打印结果的数字

内置数学函数

配合 -l

函数名作用
s(x)计算x正弦值,x是弧度制
c(x)计算x余弦值
a(x)计算x反正切值
l(x)计算x自然对数
e(x)求e的x次方
j(n,x)计算从n到x阶数

作用

在linux下bc当计算器用,3个用法

  1. bc中互动的数学运算
  2. shell中非互动的管道运算
  3. shell中互动式的输入重定向运算

示例:bc中互动的数学运算

实例:shell中非互动的管道运算

直接进行bc表达式计算输出

echo “expression” | bc [option]

“expression”表达式必须符合bc命令要求的公式

“expression”表达式里面可以引用shell变量

例如:shell变量a=2 在表达式中

将bc计算结果赋值给shell变量

# 第一种

var_name=`echo "expression" | bc [option] `

# 第二种

var_name=$(echo "expression" | bc [option])

# 示例

区别:  `` 所有Linux都兼容

shel中非互动式的输入重定向运算

特点类似文件中输入,可以多行运算表达式

语法

# 第一种

var_name=`bc [opyions] << EOF

第一行表达式1

第二行表达式2

……

EOF

`

# 第二种

var_name=$(bc [options] << EOF

第一行表达式1

第二行表达式2

……

EOF

)

EOF...EOF 输入流的多行表达式

含义:将EOF中间多行表达式给到bc去执行,在将bc结果给shell变量var_name

Logo

DAMO开发者矩阵,由阿里巴巴达摩院和中国互联网协会联合发起,致力于探讨最前沿的技术趋势与应用成果,搭建高质量的交流与分享平台,推动技术创新与产业应用链接,围绕“人工智能与新型计算”构建开放共享的开发者生态。

更多推荐