一、Shell数组
- 使用()创建数组,可以是任意形式,=左右不可有空格
- 数组中每个元素使用用空格区分
- 数组下标从0开始计算
- 使用 * 或者 @ 符号获取数组长度
echo "-----------数组 中间用空格区分 赋值中等号不能加空格-----------" arr=(12 ad "da的" d 2) arr[5]=999 echo "arr输出:${arr[@]}" echo "arr长度:${#arr[*]}" arr[${#arr[@]}]=ssa echo "arr输出:${arr[@]}" echo 获取下标为4的数组长度:${#arr[4]}
二、关联数组
#!bin/bash echo "-----------键值对-----------" declare -A as as["222"]="bbb" as["111"]="aaa" as["333"]="ccc" echo "总输出:${as[@]}" echo "所有键:${!as[@]}" echo "长度:${#as[@]}"
三、运算符
#!/bin/bash #!bin/bash echo ' + 加法 `expr $a + $b` 结果为 30。 - 减法 `expr $a - $b` 结果为 -10。 * 乘法 `expr $a \* $b` 结果为 200。 / 除法 `expr $b / $a` 结果为 2。 % 取余 `expr $b % $a` 结果为 0。 = 赋值 a=$b 把变量 b 的值赋给 a。 == 相等 用于比较两个数字,相同则返回 true。 [ $a == $b ] 返回 false。 != 不相等 用于比较两个数字,不相同则返回 true。 [ $a != $b ] 返回 true。' echo echo "-----------运算符 必须有空格-----------" echo val=`expr 2 + 3` echo "两数之和为:$val" a=10 b=20 val=`expr $a + $b` echo $val val=`expr $a - $b` echo $val val=`expr $a \* $b` echo $val val=`expr $b / $a` echo $val echo "-----------if后、 变量前、后,必须有空格-----------" if [ $a == $b ] then echo "yes" fi if [ $a != $b ] then echo "No" fi
四、布尔运算符和逻辑运算符
echo echo " -----------------------布尔运算符和逻辑运算符-------------" echo echo ' ! 非运算,表达式为 true 则返回 false,否则返回 true。 [ ! false ] 返回 true。 -o 或运算,有一个表达式为 true 则返回 true。 [ $a -lt 20 -o $b -gt 100 ] 返回 true。 -a 与运算,两个表达式都为 true 才返回 true。 [ $a -lt 20 -a $b -gt 100 ] 返回 false。 &&----------逻辑的 AND----------[[ $a -lt 100 && $b -gt 100 ]] 返回 false ||----------逻辑的 OR----------[[ $a -lt 100 || $b -gt 100 ]] 返回 true' echo echo echo " -----------------------------关系运算符-------------------------------" echo ' eq 检测两个数是否相等,相等返回 true。 [ $a -eq $b ] 返回 false。 -ne 检测两个数是否不相等,不相等返回 true。 [ $a -ne $b ] 返回 true。 -gt 检测左边的数是否大于右边的,如果是,则返回 true。 [ $a -gt $b ] 返回 false。 -lt 检测左边的数是否小于右边的,如果是,则返回 true。 [ $a -lt $b ] 返回 true。 -ge 检测左边的数是否大于等于右边的,如果是,则返回 true。 [ $a -ge $b ] 返回 false。 -le 检测左边的数是否小于等于右边的,如果是,则返回 true。 [ $a -le $b ] 返回 true。' echo a=10 b=20 echo "a=$a b=$b" if [ $a -gt 5 -a $b -lt 30 ] then echo 'a>5 且 b<30' fi if [ $a -gt 5 -o $b -lt 15 ] then echo 'a>5 或 b <15' fi if [[ $a -gt 5 && $b -lt 30 ]] then echo 'a>5 && b<30' fi if [[ $a -gt 5 || $b -lt 15 ]] then echo 'a>5 || b <15' fi