数组:
https://blog.csdn.net/Jerry_1126/article/details/52027539
对数组不了解,进行一下笔记:
A=(SRR1.sam SRR2.sam SRR3.sam)
需要对A数组每个元素添加.bam后缀,操作如下:
[kcao@login 04_trim]$ echo ${A[*]}
SRR1.sam SRR2.sam SRR3.sam
[kcao@login 04_trim]$ for i in `seq ${#A[*]}`;do A[i-1]=${A[i-1]}.bam;done;echo ${A[*]}
SRR1.sam.bam SRR2.sam.bam SRR3.sam.bam
或者
[kcao@login 04_trim]$ echo ${b[*]}
SRR1.sam.bam SRR2.sam.bam SRR3.sam.bam
数组声明:
declare -a array_name
declare -a nums=(1 2 3 4)
unset array_name 删除数组
unset nums[0] 删除元素
可以不实现声明,直接进行定义
>数组定义:
array_name = (1 2 3 4 5 6 name age) # 1
array_name[0]=asd # 2
array_name[2]=asda
array_name=([0]=asda [1]=qwea [2]=sqzd) # 3
str="asda asda adsa qweq "
array_names=($str) # 4
求数组长度:
${#array_name[@]}
${#array_name[*]}
求数组某个元素的长度:
${#array_name[2]} 第三个元素的长度 # 1
expr length ${array_name[2]} # 2
echo ${array_name[2]} | wc -L # 3
echo -n ${array_name[2]} | wc -l # 4
数组索引:
s="A,B,C,D"
a=(`echo $s | tr ',' ' '`)
echo ${!a[@]}
数组遍历:
names=(asda aqwe sda gsdf wqe)
for (( i=0;i<${#array_name[*]};i++ )) 按索引遍历
echo ${array_name[$i]}
do
echo ${array_name[$i]}
done
for i in ${array_name[*]] 不按索引遍历
do
echo $i
done
数组添加元素:
array_name=(1 2 3 4)
array_name[4]=5 # 1 使用索引添加元素
old=(1 2 3 4)
new=(${old[*]} 5) # 构建新数组
分片访问
分片访问形式为:${数组名[@或*]:开始下标:结束下标},注意,不包括结束下标元素的值。
例如:${arr_number[@]:1:4},这里分片访问从下标为1开始,元素个数为4。
模式替换
形式为:${数组名[@或*]/模式/新值}
例如:${arr_number[@]/2/98}