Bash最基本的语法
循环和条件判断—Bash
Vim快捷键
运算符----Bash
数组----Bash
字符串—Bash
变量----Bash
数组
巨人的肩膀:Bash脚本教程
bash支持一维数组(不支持多维数组),并且没有限定数组的大小。
类似于 C 语言,数组元素的下标由 0 开始编号。获取数组中的元素要利用下标,下标可以是整数或算术表达式,其值应大于或等于 0。
定义数组
在Shell
中,用括号{}
来表示数组,数组元素用"空格"符号分割开。定义数组的一般形式为:
数组名=(值1 值2 ... 值n)#可以这样
array_name=(value0 value1 value2 value3) #可以这样
array_name=(
value0
value1
value2
value3
)
array_name[0]=value0#可以这样
array_name[1]=value1
array_name[n]=valuen
#利用declare -a也可以声明数组
$ declare -a XXX
读取数组
${数组名[下标]}
,{}
必不可少
使用 @
符号可以获取数组中的所有元素----- echo ${array_name[@]}
-
拷贝数组
$ hobbies=("$array[@]")#注意是在双引号中呢
-
添加数组成员
$ hobbies=("array[@]" diving)#新数组在array之后添加了新的成员
#也可以通过+=赋值运算符 $ foo=(a b c) $ echo ${foo[@]} a b c $ foo+=(d e f) $ echo ${foo[@]} a b c d e f
数组长度
获取数组长度的方法与获取字符串长度的方法相同。
-
整个数组的长度
${#array[@]} #OR ${#array[*]}
-
数组中某个元素的长度
${#array[2]}
获取数组下标
因为数组的长度是不固定的,某些位置可以有值,某些位置可以为空。所以获取数组中有值的下标也是需要的
语法 :${!#array[@]}
或者${!#array[*]}
$ arr=([5]=a [9]=b [23]=c)
$ echo ${!arr[@]}
5 9 23
$ echo ${!arr[*]}
5 9 23
#上面例子中,数组的5、9、23号位置有值。
删除数组
命令**unset
** 可以删除数组,当然它也可以删除字符串
$ foo=(a b c d e f)
$ unset foo[2] #删除数组中第三个元素
$ echo ${foo[@]}
#a b d e f
#删除整个数组
$unset foo
关联数组
关联数组使用字符串而不是整数作为数组索引。
declare -A
可以声明关联数组
declare -A colors
colors["res"]="#ff0000"
colors["green"]="#00ff00"
colors["blue"]="#0000ff"
#访问关联数组
echo ${colors["blue"]}