shell中计算命令详解(expr、(())、 $[]、let、bc )

目录

一、expr命令

1、整数运算(注意需要空格,需要加"\"不让特殊字符转义)

1、获取计算的结果赋值给新变量的语法

2、字符串语法 

1、计算字符串的长度语法

2、截取字符串语法

3、获取一个字符在字符串中第一次出现的位置

4、正则表达式匹配1语法

5、正则表达式匹配2语法,功能和1一样,语法比1简单

二、计算命令 :(()) 命令

1、作用   

2、介绍

3、语法

         4、用法

① 给与双括号里面的变量赋值

②给与双括号外面的变量赋值

③于逻辑预算符进行使用

三、let 命令详解

四、$[] 命令

1、功能

能够使用$[ ]进行整数的数学运算

2、语法

3、用法

五、bc 命令

1、功能:

Ⅰ:bc中的互动式的数学运算

2、语法

3、内置变量

Ⅱ: bc在shell中进行非互动式的bc管道运算

1、语法

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

Ⅲ: bc在shell中进行非互动式的输入重定向运算

1、作用

2、语法

总结: 


一、expr命令

expr (evaluate expressions的缩写)。"表达式求值"。Shell expr是一个功能强大。并且比较复杂的命令,它除了可以实现整数计算,还可以结合一些选项对字符串进行处理,例如计算字符串长度、字符串比较、字符串匹配、字符串提取等。

空格 隔开每个项
\(反斜杠) 放在 shell 特定的字符前面
“”(引号) 对包含空格和其他特殊字符的字符串要用引号括起来

1、整数运算(注意需要空格,需要加"\"不让特殊字符转义)

1、获取计算的结果赋值给新变量的语法

可以使用$()和 两个反撇好”``“  表示。

2、字符串语法 

1、计算字符串的长度语法

语法:expr length  

2、截取字符串语法

语法:expr substr ”字符串“ start end

#start 截取字符串的起始位置,从1开始(注意编号从一开始,而不是0开始)

#end截取字符串的结束位置,包含这个位置也被截取

 (start=1;end=2)

3、获取一个字符在字符串中第一次出现的位置

语法:expr index 被查找的字符串  需要查找的字符

4、正则表达式匹配1语法

语法: expr match  字符串  正则表达式

#正则表达式默认带有“^”,表示已什么开头

#返回值为符合,匹配字符长度,否则返回0

#正则表达式“."(点)代表任意一个字符

#正则表达式中通配符“*”(星号)代表前面的字符可以出现0次到多次

#“.*m”(点心m):匹配字符串中m前面的字符串长度(以任意长度字符开头到m结束且包含m,匹配m之前的长度。得出匹配字符串的长度)

5、正则表达式匹配2语法,功能和1一样,语法比1简单

语法:expr 字符串 :正则表达式

#正则表达式默认带有“^”,表示已什么开头

#返回值为符合,匹配字符长度,否则返回0

 expr  小结:

1.整数计算:

      expr   整数运算表达式

2字符串操作:

expr length 字符串     :获取字符串的长度

expr substr  字符串   start   end   :      截取字符串

expr index   字符串  查找的字符       :查找字符在字符串中第一次出现的位置,位置从1开始的

<think>好的,我现在需要详细回答用户关于Linuxlet命令的用法和示例的问题。首先,我需要回顾用户提供的引用内容,确保信息准确。 根据引用[1]和[2],let命令是Bash中的计算工具,用于算术运算。它支持基本运算符和方幂运算符。用户需要注意变量在let中使用时不需要加$符号,而且返回状态取决于表达式结果是否为0。引用[3]提供了几个示例,包括加法、乘法、幂运算和在for循环中的使用。引用[4]提到小数运算使用bc,但let只处理整数,这点需要区分。 接下来,我需要组织这些信息,分点说明语法、运算符、注意事项,并提供多个示例。同时,用户要求生成相关问题,我需要根据内容设计相关问题,确保覆盖常见疑问点。 检查是否有遗漏,例如let的作用范围、错误处理、与expr的区别。确保示例涵盖各种运算,并强调只能处理整数。可能还需要提到返回值在脚本中的判断使用。 最后,确保回答结构清晰,使用中文,数学表达式正确使用$...$格式,独立公式用$$...$$。引用标识要正确添加到参考内容末尾。</think>### Linux let命令详细解析 #### 一、基本语法与功能 1. **语法格式** ```bash let [表达式1] [表达式2] ... ``` 支持多个表达式连续计算,表达式包含变量和运算符,变量无需添加`$`符号[^2]。 2. **支持的运算符** - 基础运算:`+`(加)、`-`(减)、`*`(乘)、`/`(除)、`%`(取余) - 位运算:`<<`(左移)、`>>`(右移)、`&`(按位与)、`|`(按位或)、`~`(按位非) - 逻辑运算:`&&`(逻辑与)、`||`(逻辑或)、`!`(逻辑非) - 方幂运算:`**`(如`2**3=8`) - 自增/自减:`++`、`--` - 比较运算符:`==`、`!=`、`>`、`<`等(但结果仅返回状态码,不输出数值)[^3]。 3. **返回值规则** - 若表达式结果为非0,返回状态码`0`(表示成功); - 若结果为0,返回状态码`1`(表示失败)[^2]。 --- #### 二、使用示例 1. **基础算术运算** ```bash let a=5+4 # 加法 → a=9 let b=9-3*2 # 先乘后减 → b=3 let "c = (a + b) / 2" # 使用引号包裹含空格的表达式 → c=6 ``` 2. **自增与复合运算** ```bash let counter=0 let counter++ # 自增 → counter=1 let counter+=5 # 复合赋值 → counter=6 ``` 3. **幂运算与位运算** ```bash let n=2**3 # 2^3=8 let "m = 16 >> 2" # 16右移2位 → m=4 ``` 4. **循环中的累加应用** ```bash sum=0 for i in {1..5}; do let "sum += i" done echo $sum # 输出15 ``` --- #### 三、注意事项 1. **仅支持整数运算** let无法处理浮点数,需用`bc`或`awk`进行小数运算[^4]。 2. **作用域限制** 通过let赋值的变量仅在当前Shell环境中有效。 3. **错误处理** 若表达式语法错误(如除零),let会直接报错并终止脚本执行,建议搭配`|| true`忽略错误: ```bash let "1/0" || true # 避免脚本终止 ``` --- #### 四、与其他命令对比 | 命令 | 特点 | 示例 | |---------|-----------------------------------------|-------------------------------| | `let` | 无需`$`,支持复合运算,返回状态码 | `let a+=1` | | `expr` | 需空格分隔参数,输出结果到stdout | `expr 5 + 3` | | `$(( ))`| 算术扩展,直接替换为结果 | `echo $((5**2))` → 25 | ---
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值