4)获取字符串长度
在${}中使用“#”获取长度 name=“test”; echo ${#name}; # 输出为45)提取子字符串
1:4 从第2个开始 往后截取4个字符 ::4 从第一个字符开始 往后截取4个字符 name=“this is my name”; echo ${name:1:4} #输出 is i echo ${name::4} #输出 this数组
bash只支持一维数组,不支持多维数组
定义数组:array_name=(li wang xiang zhang) (小括号做边界、使用空格分离) 单独定义数组的元素: array_para[0]=“w”; array_para[3]=“s” (定义时下标不连续也可以) 赋值数组元素:array_name[0]=“zhao”; 获取数组元素: array_name[0]=“li” array_name[3]=“zhang” echo ${array_name[0]} # 输出"li" echo ${array_name[1]} # 输出" " echo ${array_name[3]} # 输出"zhang" echo ${array_name[@]} # 输出"li zhang" 输出数组所有元素,没有元素的下标省略 取得元素个数:${#array_name[@]} 或者 ${#array_name[*]} 取得单个元素长度:${#array_name[1]}参数传递
获取参数值:
$0 : 固定,代表执行的文件名
$1 : 代表传入的第1个参数
$n : 代表传入的第n个参数
$#:参数个数
$*: 以一个单字符串显示所有向脚本传递的参数。如"$*“用「”」括起来的情况、以"$1 $2 … $n"的形式输出所有参数
$@:与$*相同,但是使用时加引号,并在引号中返回每个参数。
$$:脚本运行的当前进程号
$!:后台运行的最后一个进程的ID
$?: 显示最后命令的退出状态。0表示没有错误,其他任何值表明有错误。
$* 与 $@ 区别
相同点:都是引用所有参数。
不同点:只有在双引号中体现出来。假设在脚本运行时写了三个参数 1、2、3,,则 " * " 等价于 “1 2 3”(传递了一个参数),而 “@” 等价于 “1” “2” “3”(传递了三个参数)。
运算符
算数运算
+ 、-、*、 : 乘号前必须加进行转义才可以进行乘法运算 加法运算 val=`expr 2 + 2` (使用linux命令expr进行辅助运算) val=$[2+2] (4个空格不是必要的,不同于条件判断) val=$((2+2))数字关系运算符
关系运算符只支持数字,不支持字符串,除非字符串的值是数字。
下面假定变量 a 为 10,变量 b 为 20
-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。









