shell脚本的运算符类型

在这里插入图片描述

shell脚本运算符优先级???

位移运算符:>>、<<

????

按位运算符:~、|、&、^

取余运算符:%

3%2=1
2%2=0
4%2=0

使用RANDOM以及取余运算取出0-n的随机数

#!/bin/bash
# 取出0-11之间的随机数(包括0,不包括11)
echo $((RANDOM%11))
# 测试一个括号 echo $(RANDOM%11)

自增运算符:++

i++

#!/bin/bash
array1=(Lotus Bob aa bb cc dd ee ff gg hh ii)
for((i=0;i<=10;i++))
do
        echo "array1[$i]: ${array1[i]}"
done

在这里插入图片描述

也有++i???

逻辑运算符&&、||、!

逻辑运算符是编程中用于控制逻辑流的基本工具,它们用于根据条件的真假来决定程序的执行路径。&&||! 是三种常见的逻辑运算符,它们在 Shell 脚本和其他许多编程语言中都有类似的用法。

&& 运算符(逻辑与)

&& 运算符用于连接两个命令,当且仅当左边的命令执行成功(返回状态码为 0)时,才会执行右边的命令。这相当于逻辑上的“且”操作。

示例用法:

#!/bin/bash
[ 条件1 ] && [ 条件2 ]

如果 条件1 为真,则会检查 条件2。只有当两者都为真时,整个表达式才为真。

|| 运算符(逻辑或)

|| 运算符用于连接两个命令,如果左边的命令执行失败(返回状态码非 0)时,才会执行右边的命令。这相当于逻辑上的“或”操作。

示例用法:

#!/bin/bash
[ 条件1 ] || [ 条件2 ]

如果 条件1 为假,则会检查 条件2。只要其中一个条件为真,整个表达式就为真。

! 运算符(逻辑非)

! 运算符用于取反一个命令或条件的执行结果。如果命令或条件执行成功(返回状态码为 0),! 将其转换为失败(返回状态码非 0),反之亦然。

示例用法:

#!/bin/bash
! [ 条件 ]

如果 条件 为假,则整个表达式为真。

在 Shell 脚本中的使用

在 Shell 脚本中,这些逻辑运算符通常与测试命令 [ ](或 [[ ]])一起使用,用于根据条件执行不同的命令。

示例脚本:

#!/bin/bash

# 逻辑与
if [ $a -gt 10 ] && [ $b -lt 20 ]; then
    echo "$a 大于 10 且 $b 小于 20"
fi

# 逻辑或
if [ $a -lt 10 ] || [ $b -gt 20 ]; then
    echo "$a 小于 10 或 $b 大于 20"
fi

# 逻辑非
if ! [ -f "file.txt" ]; then
    echo "file.txt 不存在"
fi

其他编程语言中的用法

在其他编程语言中,如 C、Java、Python 等,这些逻辑运算符的基本概念和用法是相似的,但具体的语法可能有所不同。例如:

  • 在 C 和 Java 中,逻辑与用 &&,逻辑或用 ||,逻辑非用 !
  • 在 Python 中,逻辑与用 and,逻辑或用 or,逻辑非用 not

示例:C 语言中使用逻辑运算符

#include <stdio.h>

int main() {
    int a = 5, b = 15;

    if (a < 10 && b > 20) {
        printf("%d 小于 10 且 %d 大于 20\n", a, b);
    } else if (a > 10 || b < 20) {
        printf("%d 大于 10 或 %d 小于 20\n", a, b);
    }

    return 0;
}

总的来说,&&||! 这些逻辑运算符在 Shell 脚本和其他编程语言中都扮演着类似的角色,但具体的语法和使用方式可能会有所差异。

shell脚本的运算操作的一些方法

使用“$((具体运算操作))”

#!/bin/bash
echo $((1+2)) # 输出3
echo $((3*2)) # 输出6
echo $((25%4)) # 输出1
echo $((2**10)) # 输出1024
var1=3
var2=4
var3=$((var1+var2))
echo $var3

在这里插入图片描述

使用let命令

同样不支持浮点型,遵循shell脚本语法

#!/bin/bash
var1=
var2=3
var3=4
let var1=$var2+$var3	
echo $var1	# 输出"var1=7"

在这里插入图片描述

使用expr命令

同样不支持浮点型,遵循shell脚本语法

#!/bin/bash
# 乘号*和正则表达式的*重复,所以要用转义符
var1=
var2=3
var3=4
var1=$(expr $var2 \* $var3)
echo "var1 value is $var1"

在这里插入图片描述

使用bc语言工具

它有自己的处理规则,支持浮点型等shell中不支持的数据类型运算(使用它的前提是需要下载安装它才行)

bc 是一种任意精度的计算器语言,它的名字来源于它最初的设计目的——Basic Calculator。bc 最初是作为 Unix 系统上的一个交互式计算器程序出现的,它允许用户执行基本的算术运算。随着时间的发展,bc 的功能得到了扩展,它不仅能够处理任意精度的数值计算,还支持条件语句、循环控制结构、自定义函数以及输入输出操作,从而演变成了一个完整的编程语言。

bc 语言的设计哲学鼓励脚本化的交互式使用方式,这使得开发者可以快速撰写和测试代码片段,从而加速原型的开发和调试过程。它支持数组、自定义函数和基本的输入输出操作,其语法类似于 C 语言,因此对于熟悉 C 语言的开发者而言,bc 编程更易于上手。

bc 程序能够处理非常大的数字,支持任意精度的算术运算。它还允许用户指定数值运算的规模(scale),从而灵活控制运算结果的精度。这些特点使得 bc 在需要高精度计算的场景,如科学研究、金融分析、数据挖掘等领域,得到了广泛的应用。

在实际应用中,bc 编程通常用于需要高精度计算的场景。例如,在科学研究、金融分析、数据挖掘等领域,bc 语言的精度和灵活性给其带来了明显优势。开发人员也经常使用 bc 来验证其他程序的数值计算结果,或者作为快速原型开发和测试算法的一个手段。

提升 bc 编程技能,重点在于熟练掌握其语法和内置的数学函数。实际编写 bc 脚本,并不断尝试解决各种数学问题是提升技能的有效手段。还可以通过阅读其他人编写的 bc 代码来学习不同的程序结构和解题思路。加入开源社区,参与相关的项目和讨论同样有助于加深对 bc 编程的理解。

yum install bc -y
#!/bin/bash
var1=3.4
var2=4
echo 1+2 | bc   # "1+2"交给bc处理,输出3
echo 1.2*3 | bc #输出3.6
echo ${var1}*${var2} | bc #输出13.6

在这里插入图片描述

bc命令浮点计算

echo 1.3+2.6 | bc #不报错,会输出3.9

bc命令进行其他运算

在这里插入图片描述

在这里插入图片描述

参考资料:

bc 是一个在 Unix 和 Linux 系统中常用的命令行计算器程序,它支持任意精度的算术运算,包括加法、减法、乘法、除法,以及更复杂的数学运算,如指数、对数、三角函数等。bc 还支持用户定义函数和循环,使其能够进行更复杂的计算和编程。

在 Shell 脚本中,bc 可以用来执行那些 Shell 自带算术运算不支持的计算。例如,你可以使用 bc 来执行浮点数运算,或者处理大于64位的整数。

一、使用 bc 的基本语法

echo "表达式" | bc

或者

bc -l
定义变量
定义函数
表达式
quit

二、示例:

  1. 执行简单的算术运算
echo "2 + 2" | bc
  1. 执行浮点数运算
echo "4.2 / 2" | bc
  1. 使用变量
echo "define x 3*2
x + 1
quit" | bc
  1. 使用循环
echo "define sum(x)
  if (x <= 0)
    return(0)
  else
    return(x + sum(x-1))
  end
end

sum(10)
quit" | bc
  1. 使用 bc 的数学库
echo "scale=4
sqrt(16)
sin(1)" | bc

在这个例子中,scale=4 设置了输出的小数位数,sqrt(16) 计算了16的平方根,sin(1) 计算了1弧度的正弦值。

  • bc 默认使用整数运算,如果需要浮点数运算,需要在脚本中设置 scale
  • bc-l 选项加载了数学库,使得可以执行更复杂的数学运算,如三角函数、对数等。
  • bc 脚本中的语句需要以换行符结束,每个命令前通常需要加上 define 关键字来定义函数或变量。

bc 是一个非常强大的工具,可以在 Shell 脚本中处理复杂的数学问题。


bc 命令中,scale 是一个特殊的变量,用于定义结果中小数点后的位数。由于 bc 默认执行整数运算,不处理小数部分,所以当你需要进行浮点数运算并希望看到小数结果时,你需要设置 scale

如何使用 scale

  1. 设置小数精度:在 bc 命令中,你可以通过设置 scale 的值来指定计算结果中小数点后保留的位数。例如,如果你想保留两位小数,你可以这样设置:

    echo "scale=2; 3/4" | bc
    

    这将输出 0.75,而不是默认的整数结果 0

  2. 在交互式模式中设置:如果你在交互式模式下使用 bc,你可以在开始计算之前设置 scale

    bc
    scale=2
    3/4
    

    这将在 bc 的提示符下输出 0.75

  3. 在脚本中使用:在 bc 脚本文件中,你也可以设置 scale,然后进行浮点数运算。例如,创建一个名为 calc.bc 的文件,内容如下:

    scale=2
    3/4
    

    然后使用 bc 命令执行这个脚本:

    bc calc.bc
    

    这将输出 0.75

  4. 动态调整小数精度:你可以在同一个 bc 会话中根据需要调整 scale 的值。例如,你可以先设置 scale=2 进行一些计算,然后更改为 scale=4 以获得更高的精度。

scale 变量是 bc 中处理浮点数运算的关键,它允许用户控制计算结果的精度。通过合理设置 scale,你可以得到精确的浮点数结果,这对于财务计算、科学计算等领域非常有用。


bc 是一个任意精度的计算器语言,通常在 Linux 和 Unix 系统中使用。它支持包括加法、减法、乘法、除法、指数、余数等在内的基本数学运算,以及更复杂的数学函数,如平方根、三角函数等。bc 的语法与 C 语言类似,支持变量、函数、条件语句和循环语句。

  1. 交互式模式:直接在命令行输入 bc 进入交互式模式,可以直接输入算术表达式进行计算。

  2. 非交互式模式:可以通过管道将表达式传递给 bc 进行计算,例如:

    echo "表达式" | bc
    
  3. 设置小数精度:使用 scale 变量可以设置小数点后的位数,例如:

    echo "scale=2; 3/8" | bc
    

    这将输出 0.37,保留两位小数。

  4. 进制转换bc 支持不同进制之间的转换。例如,将十进制转换为二进制:

    echo "obase=2; 192" | bc
    

    执行结果为 11000000

  5. 数学函数:使用 -l 参数可以加载数学库,使用更多的数学函数,如 sqrt(平方根):

    echo "sqrt(100)" | bc
    

    执行结果为 10

  6. 脚本文件:可以将 bc 程序写入文件中,然后通过 bc 命令执行该文件。

  7. 选项

    • -i:强制进入交互式模式。
    • -l:定义使用的标准数学库。
    • -w:对 POSIX bc 的扩展给出警告信息。
    • -q:不打印正常的 GNU bc 环境信息。
    • -v:显示指令版本信息。
    • -h:显示指令的帮助信息。

bc 命令是一个功能强大的工具,可以在 Shell 脚本中进行复杂的数学计算和数据处理。

使用awk工具

在这里插入图片描述

Logo

GitCode 天启AI是一款由 GitCode 团队打造的智能助手,基于先进的LLM(大语言模型)与多智能体 Agent 技术构建,致力于为用户提供高效、智能、多模态的创作与开发支持。它不仅支持自然语言对话,还具备处理文件、生成 PPT、撰写分析报告、开发 Web 应用等多项能力,真正做到“一句话,让 Al帮你完成复杂任务”。

更多推荐