字符串分割成数组
使用bash的read命令分割字符串方法
IFS='.' read -r -a STR <<< 'this.needle.split.string'
分割后得到STR数组:(this needle split string)
IFS定义的是分割符号
${STR[@]分割后的数组
数组常用方法
定义方法:ARR1=(foo1 foo2 foo3 foo4 foo5),ARR2=(1 2 3 4 5)
数组个数:${#ARR1[@]}
数组输出全部:${ARR1[@]}
数组元素访问
获取数组一部分:${ARR1[@]:N1:N2}, 其中N1为开始索引,从0开始,返回值包括该元素,N1为获取长度,如果长度省略,将获取后续所有
以下为例子:
${ARR1[@]:0:1}为(foo1)(foo1 foo2)是${ARR1[@]:0:2}(foo2 foo3 foo4 foo5)为${ARR1[@]:1}(foo3 foo4)为${ARR1[@]:2:2}
数组循环
for item in ${ARR[@]};do
echo $item
do
运算
N1=5
N2=6
RES1=$[1+2]
RES2=$[$N1+N2]
相关解释
$符号为取变量值( )单小括号,需要新开子shell执行的命令组,命令组中定义的变量无法在脚本后面使用(( ))双小括号,执行符合C语言的运算和表达式,输出结果为整数,表达式中变量可以不用加$符号,((a=1+2));echo $a,表达式无返回值[ ]bash内部命令,[调用test命令,执行内部表达式,]退出并返回状态码,比较运算符只有==、!=,其只能用于字符串[[ ]]bash关键字,执行内部表达式,支持较多运算符{ }命令组或扩展,执行的命令在本shell内\`` 在子shell中执行命令