Szopen Xiao

Bash 脚本字符串与数组相关

2016-11-04

字符串分割成数组 使用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中执行命令
comments powered by Disqus