上期回顾如下:
紧接着上期,我们今天接着来给大家介绍如何在shell脚本中使用变量。
shell脚本是一个十分完备的编程语言,因此,它也可以使用变量来保存数字,字符串,数组,还有类似python的字典。
接下来我们先来介绍一下shell 脚本中常见的几种数据类型吧。
1.shell脚本默认为字符串类型
示例如下:
首先是定义一个变量的语法,等号左边是变量名,右边是变量值(注意,shell脚本变量定义时,等号左右不能存在任何空格,否则会报错)。
然后使用上节课讲过的echo命令进行打印,我们可以使用 ${mystr} 的格式, 也可以使用 $mystr 不加大括号的形式, 均可以打印出正确的变量内容,大括号在这种情况下可以省略。
大括号的作用一般是用来分割变量名和普通字符的。
比如下面示例:
在打印一连串的字符串中夹杂着我们自己定义的变量时,大括号不能省略,否则存在误判的可能。
2.shell 变量中的数值类型变量
请看下面的示例:
执行结果如下:
shell 脚本中的数值型变量可以直接定义,并运算,支持常见的加减乘除取余等运算符,也支持大于等于小于等关系运算符的运算(在 if 判断中使用)。
这节课我们聚焦于变量,对于数值类型的变量有几种计算语法。
如上图,
a. 我们可以使用 (( ))内部包含运算式子,可以正确返回运算结果。
b. 我们可以使用let 关键字,搭配变量名的方式,直接把运算结果赋值给新的变量
c. 我们可以使用expr shell内置函数,搭配运算式子,则可以直接算出结果。
d. 我们可以使用[ ] 包裹运算公式,也可以算出计算结果。
3. shell 脚本中的数组
示例如下,有两种定义方式,这两种定义方式是等价的:
第一个my_array 是直接在定义时,进行全量初始化。使用小括号括起来多个item项即可,item项的类型可以随意,shell中默认类型都是字符串,字符数值类型可以被运算。
然后我们进行数组的遍历,遍历的方式可以使用数组下标 0, 1, 2 进行访问。
也可以使用[*] 和 [@] 进行全量遍历。
第二种数组变量的定义方式是直接使用显示下标[0] [1] [2] .... 进行赋值,同样的,也可以使用多种类型。
此处为了方便演示,使用了for 循环遍历数组中的元素并打印。后面会详细讲解for循环。
执行结果如下图所示:
4.shell 脚本中的字典类型--学名是关联数组
如下示例所示:
基本上就是python中的字典类型类似,可以使用key - value 对的方式保存数据。
使用方式上和数组类似,除了上面的定义方式外,也可以使用和数组类似的下标单个定义的方式。
最重要的别忘了declare -A xxxx (xxxx 为变量名)
上面脚本执行结果如下:
好的,综上所有几乎就是shell 脚本中所有的数据类型了。
大家可以看到,shell脚本的数据类型也是蛮丰富的,跟python等脚本语言相比,也差不多。
shell脚本也是完全图灵完备的编程语言,理论上可以执行任何任务。
这节课就先介绍到这里,变量这块的话,可能要分为两期来讲,这算是上期,给大家介绍了变量的基础类型和变量的声明,定义,简单的使用。
实际上,shell脚本针对字符串类型,有许多的高级使用方式,比如字符串变量替换,变量正则匹配等等。。将在下一期继续给大家进行介绍。
如果大家感兴趣,请关注我,下一期变量的高级使用方法在平时真实工程脚本中,是十分常用的哟。。