楼主: jeson92
161 0

[教育经济学基本知识] 7.变量的数值计算实践 [推广有奖]

  • 0关注
  • 0粉丝

等待验证会员

小学生

42%

还不是VIP/贵宾

-

威望
0
论坛币
0 个
通用积分
0
学术水平
0 点
热心指数
0 点
信用等级
0 点
经验
50 点
帖子
4
精华
0
在线时间
0 小时
注册时间
2018-2-27
最后登录
2018-2-27

楼主
jeson92 发表于 2025-12-5 18:00:31 |AI写论文

+2 论坛币
k人 参与回答

经管之家送您一份

应届毕业生专属福利!

求职就业群
赵安豆老师微信:zhaoandou666

经管之家联合CDA

送您一个全额奖学金名额~ !

感谢您参与论坛问题回答

经管之家送您两个论坛币!

+2 论坛币

7. 变量的数值计算实践

Shell 中的算术运算符概述

在 Shell 脚本中进行数学计算时,会使用多种算术运算符。与大多数编程语言相似,Shell 提供了丰富的操作符来支持整数和逻辑运算。

常见的 Shell 算术运算符包括:

  • +、-:作为一元操作符时表示正号或负号;作为二元操作符时表示加法和减法。
  • *、/、%:分别代表乘法、除法以及取余(即取模)运算。
  • **:用于幂运算,例如 2**3 表示 2 的 3 次方。
  • ++、--:自增与自减操作符,可以前置或后置在变量上。
  • !、&&、||:逻辑非、逻辑与、逻辑或,常用于条件判断。
  • <、<=、>、>=:比较操作符,表示小于、小于等于、大于、大于等于。
  • ==、!=、=:用于数值相等或不相等的比较,其中 = 也可用于字符串匹配判断。
  • <<、>>:位移操作符,向左移位和向右移位。
  • ~、|、&、^:按位取反、按位或、按位与、按位异或。
  • =、+=、-=、*=、/=、%=:赋值及复合赋值操作符。例如:
    a+=1
    相当于
    a=a+1

    a-=1
    相当于
    a=a-1

常用的 Shell 算术运算命令

除了基本的操作符外,Shell 还提供了多个可用于执行算术运算的命令工具:

  • (()):双小括号结构,专用于整数运算和比较,执行效率高,是运维场景中的常用方式。
  • let:用于整数运算,功能类似于 (( )) 结构。
    (())
  • expr:可处理整数运算,同时也支持字符串长度计算、模式匹配等额外功能。
  • bc:Linux 下的功能强大计算器程序,支持浮点数运算,适合复杂精度要求的计算任务。
  • $[]:早期用于整数运算的形式(现已较少使用),部分系统仍兼容。
  • awk:不仅可以做整数运算,也支持小数运算,常用于脚本中需要格式化输出的场合。
  • declare:用于声明变量及其属性,使用 -i 参数可定义整型变量并自动启用算术运算能力。

双小括号 (( )) 数值运算详解

(( )) 是 Shell 中高效的数值运算方法,适用于变量计算和条件测试,语法灵活且性能优异,广泛应用于自动化脚本中。

基础语法说明

  • ((i = i + 1)):将表达式 i+1 的结果重新赋值给变量 i,属于“先运算后赋值”类型。
  • 注意:不能通过 echo $[i+1] 输出表达式的值,而应使用 echo $((i+1)) 来直接显示结果。
    echo ((i=i+l))

    echo $((i=i+l))
  • 可在 ((i+1)) 前添加 i= 实现赋值,即:
    i=$((i+1))((i=i+1))
  • (( 8 > 7 && 5 == 5 )):支持逻辑组合的比较判断,可用于 if 语句等流程控制中。
  • 若要直接输出表达式结果,如 echo $((2+1)),则可在 (()) 外层加上 $() 进行扩展求值。
    let 表达式

    ((表达式))

实际操作示例

[root@server bin 15:52:25]# echo $((i=i+1))
1
[root@server bin 16:06:00]# i=1
[root@server bin 16:06:06]# echo $((i=i+1))
2

let 命令的应用

let 命令专门用于整数运算,其语法格式如下:

let "表达式"

其作用等同于使用双小括号形式:

((表达式))

错误示例(未使用 let):

[root@server bin 16:06:08]# i=i+8
[root@server bin 16:06:40]# echo $i
i+8

正确用法:

[root@server bin 16:06:49]# i=1
[root@server bin 16:06:53]# let i=i+8
[root@server bin 16:07:00]# echo $i
9

expr 命令的使用技巧

expr 不仅能完成整数计算,还可用于字符串相关操作,如获取长度、查找子串位置等。

示例:获取字符串长度

[root@server bin 16:07:05]# str="abc123abc123"
[root@server bin 16:07:29]# expr length "$str"
12

使用 expr 时需注意以下规则:

  • 运算符两侧必须至少有一个空格,否则会导致语法错误。
  • 当使用乘法符号 * 时,必须使用反斜杠转义,即 \*,以避免 Shell 将其解释为通配符。
    expr(evaluate(求值)expressions(表达式))

    expr

bc 命令:高精度计算工具

bc 是 UNIX/Linux 系统下的任意精度计算器程序,既可交互运行,也可通过管道传递表达式,特别适合涉及小数或高精度需求的运算。

交互模式示例:

[root@server bin 16:07:40]# 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'.
scale=3
4/3
1.333
^C
(interrupt) Exiting bc.

非交互式调用方式:

[root@server bin 16:08:05]# echo 'scale=3;4/3' | bc

其中 scale=3 设置了小数点后保留三位。

bc

在命令行中进行数值计算时,awk 命令表现出色,尤其适用于整数和小数的运算。其优势在于处理浮点数时精度高,使用起来非常方便。

[root@server bin 16:08:31]# echo 1.1 2.2 |awk '{$1+$2}'
[root@server bin 16:09:53]# echo 1.1 2.2 |awk '{print $1+$2}'
3.3

此外,也可以使用 $[] 符号来进行简单的算术操作。这种方式常用于整型变量的增减或基本数学计算。

[root@server bin 16:11:53]# count=1;echo $[--count] |echo $count
1
[root@server bin 16:12:45]# count=1;echo $[count--] |echo $count
1
[root@server bin 16:13:08]# count=1;echo $[--count]
[root@server bin 16:13:35]# count=1;echo $[count--]
1
[root@server bin 16:13:40]# count=1;echo $[count--] ;echo $count
二维码

扫码加我 拉你入群

请注明:姓名-公司-职位

以便审核进群资格,未注明则拒绝

关键词:数值计算 expressions Absolutely Expression foundation

您需要登录后才可以回帖 登录 | 我要注册

本版微信群
jg-xs1
拉您进交流群
GMT+8, 2025-12-9 04:01