shell中计算命令详解(expr、(())、 $[]、let、bc ) |
您所在的位置:网站首页 › 数学里面sh是什么意思 › 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、整数运算(注意需要空格,需要加"\"不让特殊字符转义)可以使用$()和 两个反撇好”``“ 表示。 语法:expr length 语法:expr substr ”字符串“ start end #start 截取字符串的起始位置,从1开始(注意编号从一开始,而不是0开始) #end截取字符串的结束位置,包含这个位置也被截取 (start=1;end=2) 3、获取一个字符在字符串中第一次出现的位置语法:expr index 被查找的字符串 需要查找的字符 语法: expr match 字符串 正则表达式 #正则表达式默认带有“^”,表示已什么开头 #返回值为符合,匹配字符长度,否则返回0 #正则表达式“."(点)代表任意一个字符 #正则表达式中通配符“*”(星号)代表前面的字符可以出现0次到多次 #“.*m”(点心m):匹配字符串中m前面的字符串长度(以任意长度字符开头到m结束且包含m,匹配m之前的长度。得出匹配字符串的长度) 语法:expr 字符串 :正则表达式 #正则表达式默认带有“^”,表示已什么开头 #返回值为符合,匹配字符长度,否则返回0 expr 小结: 1.整数计算: expr 整数运算表达式 2字符串操作: expr length 字符串 :获取字符串的长度 expr substr 字符串 start end : 截取字符串 expr index 字符串 查找的字符 :查找字符在字符串中第一次出现的位置,位置从1开始的 (expr match 字符串 正则表达式);(expr 字符串 : 正则表达式) 二、计算命令 :(()) 命令 1、作用(())在运算表达式书写时,彼此之间有无空格都可以,遇到特殊字符时也不需要加“\” 能够使用(())进行整数的数学运算 2、介绍双小括号(()),用于进行数学运算表达式的执行,将数学运算表达式放在((和))之间。可以使用$获取(())表达式命令的结果,这和使用$获得变量值是一样的。 3、语法((整数运算表达式)) 4、用法 ① 给与双括号里面的变量赋值((a=1+6)) 可以在计算完成后给变量赋值。 ((b=a-1)) 把a-1的计算结果赋值给b,此中的变量a前面不需要加$,(())具有自动解析双括号内 的变量的功能。 ②给与双括号外面的变量赋值a=$((1+6)) b=$((a-1)) c=$((a+b)) 解析:可以在(())前面加上S符号获取(())命令的执行结果,从而获取整个表达式的值。以c=$((a+b))为例,即将a+b这个表达式的运算结果赋值给变量c。注意,如果c=((a+b)这样的写法是错误的,不加$就不能取得表达式的结果。 ③于逻辑预算符进行使用((a>7 && b==c)) : (())也可以进行逻辑运算,在if语句中常会使用逻辑运算。 echo $((a+10)) : 需要立即输出表达式的运算结果时,可以在(())前面加$符号 ((a=3+5,b=a+10)) : 对多个表达式同时进行计算时,多表表达式使用"∵"号隔开 需求: 1、计算1+6并赋值给变量a 2、计算变量a-1赋值给变量b 3、计算变量a+变量b赋值给变量c 4、打印变量a,变量b,变量c的值 5、$赋值写法 6、(())多个表达式计算赋值 7、 echo输出直接使用(()) 8、 (())用于逻辑表达式在if中使用 (()) 用法 小结: 1、括号内赋值:((变量名=整数表达式)) 2、括号外赋值:变量名=$((整数表达式)) 3、多表达式赋值:((变量名1=整数表达式1,变量名2=整数表达式2...)) 4、与if条件句配合使用: if((整数表达式)) 三、let 命令详解功能:能够使用let进行整数数学运算赋值 let命令和双小括号(()),在数学计算方面功能一样,但是没有(())的功能强大,let只能用于赋值计算,不能直接输出,不可以和if条件判断一起使用。 语法:let 赋值表达式 1、语法功能等价于((表达式)),let后面的整数运算表达式中变量不需要加$,特殊字符前也不需要加“\” 2、多个表达式之间使用空格 而不是","号 3、对于类似let a+b这样的写法,Shell虽然计算了a+b的值,但却将结果丢弃,如果echo let a+b 会直接输出字符串 a+b;若不想这样。可以使用1et summa+b将a+b的结果保存在变量sum中 示例:正常整数运算 变量++和++变量的区别 变量数值自增+2的表示方法 乘法表示方法 let 命令小结: 1、let数字整数计算用法 2、作用:用于赋值,是最简洁的整数运算赋值命令计算赋值用法: let变量名=整数运算表达式 3、多个表达式计算赋值用法: let 变量名1=整数运算表达式1 变量名2=整数运算表达式2 ... 四、$[] 命令 1、功能 能够使用$[ ]进行整数的数学运算和(())、let命令类似,$[ ]也只能进行整数运算。但是只能对单个表达式的计算求值与输出,不能多个同属进行。 2、语法格式:$[表达式] ①$[ ]会对表达式进行计算,并取得计算结果 ②表达式内部不可以赋值给变量没有(())功能强大 3、用法完成整数及小数运算 ①能够在bc中进行互动式的数学运算 ②能够在shell中进行非互动式的bc管道运算 ③能够在shell中非互动式的输入重定向bc运算 Ⅰ:bc中的互动式的数学运算 2、语法语法一(作为系统计算器使用) 格式:bc [选项] [参数] 还可以对文件内容进行计算 scale :指定精度,对计算结果指定保留小数;默认为0,即不使用小数部分只保留整数位。 echo "表达式" | bc [选项] 第一种方式: A=$(echo "表达式" | bc [选项]) 第二种方式:反引号 A=`echo "表达式" | bc [选项]` 两种方式区别:``反引号是所有linux系统支持的方式。兼容性较好,但是容易与引号产生混淆 $()不是所有linux系统都支持的方式。兼容性较差,但是不容易产生混淆 将计算表达式输出给bc去执行,特点类似于文件中输入,可以输入多行表达式,更加清晰 2、语法第一种方式: A=`bc |
CopyRight 2018-2019 办公设备维修网 版权所有 豫ICP备15022753号-3 |