Shell扩充-[]与[[]]、bc命令、seq命令、数组

请坐!

    • []与[[]]
    • bc命令
    • seq命令
    • 数组
        • **基础用法**
        • 数组遍历脚本
        • 数组元素的添加、修改
        • 数组切片
        • 元素切片
        • 数组替换、删除

[]与[[]]

在条件判断时,使用 [ ] 与 [ [ ] ] 的区别

  • 在使用==或!=时,可以使用[ ] 与 [ [ ] ],但是符号两侧必须加空格
[ $a == $b ][[ $a == $b ]]
  • 在使用<或>时,只能使用[ [ ] ],但是符号两侧有无空格都可以
[[ $a>$b ]][[ $a > $b ]]
  • 在使用>=或<=时,只可以用[ [ ] ],符号两侧必须无空格

bc命令

bc 命令是任意精度计算器语言,在linux下当计算器用。
常用的运算:+ 加法,- 减法,* 乘法,/ 除法,^ 指数 ,% 余数

常用就是通过|给bc运算
如:

echo "15+5" | bc
20

#scale=2 设小数位,2 代表保留两位:
echo 'scale=2; (2.777 - 1.4744)/1' | bc
1.30

seq命令

seq命令用于产生从起始值到结束值之间、固定增量的所有浮点数

格式:
seq 起始值 变量 最大值

#变化量可以没有
如:seq 1 10
#取1-10的整数
如:seq 1 2 100
#取1-100之间,从一开始每次自增2的值-->也就是取1-100的奇数

数组

之前我们说过的数组,是通过declare命令来声明数组

declare -a 属组名='[0]=" " [1]=" " [2]=" "'

现在有一种更简单的方式

adc=(1 2 3)
#这就表示abc[0]=1;abc[1]=2;abc[2]=3

基础用法

echo ${abc[@]}
#查看数组中的内容

echo ${#abc[@]}
#查看数组中共有几个元素

echo ${abc[1]} | wc -L 
#查看下标为1的元素中共有几个字符

数组遍历脚本

		#!/bin/bash
		
		abc=(1 2 3)
		a=0
		for i in ${abc[@]}
		do
			echo "下标为$a的元素的值为:$i"
			let a++
		done

数组元素的添加、修改

abc=(1 2 3)
abc[3]=10
#这相当于添加,因为abc初始,从下标0开始,到下标2,只有3个元素,并没有下标3的元素,我们后面添加的这个下标3,就是在原来的基础上加上了下标3

abc=(1 2 3 4)
abc[3]=10
#这就相当于修改,数组初始是有下标3的,我们在后面再次添加了下标3,也是一个覆盖原来下标3的功能

数组切片

格式:${数组名[@]:下标位:数量}

abc=(1 2 3 4 5 6 7)
${abc[@]}

${abc[@]:1}		2-7
#从下标为1的位置开启取值,取所有

${abc[@]::3}	1-3
#从下标为0的位置连续取3个值

${abc[@]:2:3}	3-5
#从下标为2的位置连续取3个值

${abc[@]:(-2):2}	6-7
#从倒数第二个下标位连续取2个值

bcd=(${abc[@]:(-2):2})
#将之前的处理结果赋值给新的数组变量

元素切片

格式:

${数组名[@或*]:下标位:数量}:从所有的值当中去某一部分值(指定范围的元素)

${数组名[数字]:下标位:数量}:从指定的某一个元素当中取一部分字符串,等同于echo ${abc[0]} | cut -c 1-5

abc=(zhangsan lisi laowang laosong)
${abc[0]}
##取第一个元素的所有字符

${abc[0]:1}
#从第一个元素中的第一个字符开始,取剩余所有字符

${abc[0]::3}
#从第一个元素中的第1个字符开始,连续取三个字符

${abc[0]:2:3}
#从第一个元素的第二个字符开始,连续取三个字符

数组替换、删除

${数组名[@或*]/旧字符/新字符}
旧字符前边的/数量为1个时,只替换元素当中的第一个旧字符

${数组名[@或*]//旧字符/新字符}
旧字符前边的/数量为2个时,替换元素当中的所有旧字符

如果新字符为空,则为删除

${abc[@]/e/}
#数组中所有的元素,每个元素出现的第一个e替换为空,也就是删除

${abc[@]//e/}
#数组中所有的元素中出现的所有e都被删除

你可能感兴趣的:(Shell高级篇,linux)