数学运算在写的时候是一个必不可少的内容,但是在bash中多有的变量默认都是字符串。因此,需要一些特殊的方法进行数学运算。
1.bash的数学运算
bash用想要进行数学运算,一共有三种方法,expr ,let ,(())
expr 返回一个表达是的右值,let,和(())实现了让数学计算可高级语言一样的功能
#!/bin/bash
#数学运算
var1=1
var2=12
#var=`expr $var1 + $var2`
let var=var1+var2
echo $var
echo `expr $var1 + $var2`
((var_n=var1+var2))
echo $var_n
运行结果:
expr用的时候必须用$引用来说明是当下的值,并且运算符的左右两侧都要有空格,* 运算的花必许用\进行转义说明
let和(()) 实现了和高级语法中一样的方法让,但是他们中的数学运算符两侧不能够 有空格。
另外 bc 是数学运算中的一种高级的数学运算,可以实现浮点数类型的运算,并且可以实现一些数学函数,bc的运用一般用管道符|放在后面,前面表达式用双引号括起来
程序2:
#!/bin/bash
#select语句用法
var1=2.2
var2=12
c=`echo "$var1*$var2"|bc`
echo $c
var3=100
echo "sqrt($var3)"|bc
echo "$var3^2"|bc
运行结果:
管道符和引号之间呢有空格,第一个值输两个浮点数的乘积,第二个数是开根好,第三个数是平方
2.bash中的函数
函数也是我们编写程序必不可少的一个功能,bash也有自己风格的函数写法,有两种形式
function name
{
#函数体
}
name()
{
#函数体
}
bash的函数也可传递参数,可以在函数的后面添加参数的形式传递进去,在函数体没表示的时候用标准的参数表式发进行表示$+数字
bash中变量的创建一般都是全局变量,整个程序都能够用的。因此,修改,创建变量的是后要特别注意可能出现的错误,当发现进需要在一定的范围内用的变量的话,可以用关键子local生命一个本地变量
函数可以用return来说明函数到了某一个位置后直接退出函数,默认函数的退出值是0,如果非正常完成函数则会返回一个非0的值。这里和高级语法的用法是一样的。在外面的主程序中的返回要用exit进行退出。
注意:这里shell 和bash出现了差异,sh +文件名 运行bash文件的话会不认function这个关键字,这是候要用 bash +文件名 去运行
#!/bin/bash
#bash函数的运用
var=10
function fun1
{
var=20
echo 这是函数1
echo 函数1收到的参数有 $#
echo $0 $1
}
fun2()
{
local var=30
echo 这是函数2
echo "local var= "$var
}
echo "var= "$var
fun1
fun1 "12"
echo "var= "$var
fun2
echo "var= "$var
运行结果:
可以看到,加完local关键子后,生命的变量就变成了本地变量,而未加的默认变量则是一个全局变量,函数传递参数类似与命令行传递参数的方法进行传递,而引用的方法也是和命令行中参数引用的方法一样。
bash有关高级语言中常用的一些方法就到这里,下面的章节将会讲述bash中与系统相管的一些高级用法