shell编程之函数以及函数的调用,变量的比较
shell作为一门脚本语言,就不得不和Python以及PHP相比较一下了,相比而言,shell的适用范围要窄很多,编写的过程类似Python十分灵活,同所有的高级编程语言一样,都可以通过函数封装一些变量和对变量处理流程所构成的一些逻辑,从而实现一些更高级的功能。
大部分shell脚本是通过调用操作系统的内置命令以及变量来满足工作需求的,但也有需要自定义变量,然后使用函数封装变量,改变shell脚本的执行流程,这期间会有许多的逻辑在内。
shell脚本内的函数写法:
函数的结构为: function 函数名() 空格{
}
{}内的内容为函数体,在花括号内书写对变量的处理逻辑。对函数的调用是在函数体外,只写函数的名称,这一点和Python不同,Python调用函数需要加括号。
以上脚本是一个十分简单的加法运算函数,变量时定义在函数外部的,表示a和b这两个变量是全局变量,也就是说,如果在这个函数后面在写别的功能函数,可以重复调用a和b这两个变量。
c变量是函数内的变量,调用后,提升为了全局变量(为什么是全局可看后面验证)。
函数调用不需要加(),直接写函数名称即可,定义函数的时候 按照规范需要书写function,但不写也不会报错(写了更容易阅读,一看就知道这是函数)。
脚本的执行流程为按行自上而下逐行执行,因此,这里特别要注意了,调用函数的部分一定要在函数的后面。
这个脚本调用c变量和a变量相乘,赋予乘的值给d变量,然后打印d变量的值。以上两个脚本是加法运算和乘法运算。
下面是比较变量的值。
这两个变量a和b的值的类型都为整数,整数比较可用 -eq和 ==两种方式比较数值是否相等。那么,如果a和b的值为字符串类型,如何比较呢?
以上三个实例,分别使用了==,=~,管道+grep过滤字符串的三种方法,其中的空格要严格按照示例书写,被比较的字符串不管是不是变量都需要双引号引起来(二,三示例)。