1、数组
语法格式:n=(value1 value2 ....valuen)
2、关联数组
语法格式:declare -A array_name
-A 选项就是用于声明一个关联数组
关联数组的键是唯一的
3、获取数组中的所有元素
使用@或*可以获取数组中的所有元素
使用@的时候如果加了双引号那么数据会变为一个字符串数组
使用*的时候如果加了双引号那么数据会变成一个独立的字符串
4、获取数组长度类似获取字符串长度方法:
echo ${#my_array[*]}
Shell基本运算符
1、算术运算符
+ 加法 `expr $a+$b`
- 减法 `expr $a-$b`
* 乘法 `expr $a*$b`
/ 除法 `expr $a/$b`
% 取余 `expr $a%$b`
= 赋值 a=$b
== 相等 [$a==$b] 比较两个数字,相同返回true
!= 不相等 [$a != $b] 不相同返回true
条件表达式要放在方括号之间,并且要有空格,例如: [$a==$b] 是错误的,必须写成 [ $a == $b]。
乘号(*)前边必须加反斜杠(\)才能实现乘法运算
if...then...fi 是条件语句,后续将会讲解。
在 MAC 中 shell 的 expr 语法是:$((表达式)),此处表达式中的 "*" 不需要转义符号 "\" 。
2、关系运算符
-eq 检测两个数是否相等,相等返回true [$a -eq $b]
-ne 检测两个数是否不相等,不相等返回true [$a -ne $b]
-gt 检测左边的数是否大于右边的,如果是,返回true [$a -gt $b]
-lt 检测左边的数是否小于右边,如果是,返回true [$a -lt $b]
-ge 检测左边的数是否大于右边的,如果是,则返回true [$a -ge $b]
-le 检测左边的数是否小于等于右边的,如果是,则返回true [$a -le $b]
3、布尔运算符
! 非 表达式为true 则返回false,否则返回true
-o 或 有一个表达式为true,则返回true
-a 与 两个表达式都为true 才返回true
4、逻辑运算符 a=100 ,b=20
&& 逻辑的AND [[$a -lt 100 && $b -gt 100]] 结果为false
|| 逻辑的OR [[$a -lt 100 || $b -gt 100]] 结果为true
6、字符串运算符
= 检测两个字符串是否相等 相等返回true [$a = $b]
!= 检测两个字符串是否不相等 不相等返回true [$a != $b]
-z 检测字符串长度是否为0,为0返回true [-z $a]
-n 检测字符串长度是否不为0,不为0返回true [-n "$a"]
$ 检测字符串是否不为空,不为空返回true [$a]