可以切片
一次赋予一个值
#数组名[索引下标]=值 array[0]=v1 array[1]=v2 array[2]=v3 array[3]=v4
#数组名=(值1 值2 值3 ...) array=(var1 var2 var3 var4) array1=(`cat /etc/passwd`) #将文件中每一行赋值给array1数组 array2=(`ls /root`) array3=(harry amy jack "Miss Hou") array4=(1 2 3 4 "hello world" [10]=linux)
${数组名[元素下标]} echo ${array[0]} #获取数组里第一个元素 echo ${array[*]} #获取数组里的所有元素 echo ${#array[*]} #获取数组里所有元素个数 echo ${array[@]} #访问数组中所有元数,等同于 echo ${array1[*]} echo ${!array[@]} #获取数组元素的索引下标 echo ${array[@]:1:2} #访问指定的元素;1代表从下标为1的元素开始获取;2代表获取后面几个元素 #查看普通数组信息: [root@MissHou ~]declare -a
declare -A asso_array1 declare -A asso_array2 declare -A asso_array3
#数组名[索引or下标]=变量值 asso_array1[linux]=one asso_array1[java]=two asso_array1[php]=three
asso_array2=([name1]=harry [name2]=jack [name3]=amy [name4]="Miss Hou")
# declare -A declare -A asso_array1='([php]="three" [java]="two" [linux]="one" )' declare -A asso_array2='([name3]="amy" [name2]="jack" [name1]="harry" [name4]="Miss Hou" )'
# echo ${asso_array1[linux]} one # echo ${asso_array1[php]} three # echo ${asso_array1[*]} three two one # echo ${!asso_array1[*]} php java linux # echo ${#asso_array1[*]} 3 # echo ${#asso_array2[*]} 4 # echo ${!asso_array2[*]} name3 name2 name1 name4
[root@MissHou shell05]# declare -A books [root@MissHou shell05]# let books[linux]++ [root@MissHou shell05]# declare -A|grep books declare -A books='([linux]="1" )' [root@MissHou shell05]# let books[linux]++ [root@MissHou shell05]# declare -A|grep books declare -A books='([linux]="2" )'
dirname
和 basename
# A=/root/Desktop/shell/mem.txt # echo $A /root/Desktop/shell/mem.txt # dirname $A 取出目录 /root/Desktop/shell # basename $A 取出文件 mem.txt
#一个“%”代表从右往左去掉一个/key/ #两个“%%”代表从右往左最大去掉/key/ #一个“#”代表从左往右去掉一个/key/ #两个“##”代表从左往右最大去掉/key/ #举例说明: url=www.taobao.com echo ${#url} #获取变量的长度 echo ${url#*.} #输出taobao.com echo ${url##*.} #输出com echo ${url%.*} #www.taobao echo ${url%%.*} #输出www
#替换:/ 和 // 1015 echo ${url/ao/AO} #替换第一个ao 1017 echo ${url//ao/AO} #贪婪替换,替换全部ao #替代: - 和 :- +和:+ 1019 echo ${abc-123} 1020 abc=hello 1021 echo ${abc-444} 1022 echo $abc 1024 abc= 1025 echo ${abc-222} #${变量名-新的变量值} 或者 ${变量名=新的变量值} #变量没有被赋值:会使用“新的变量值“ 替代 #变量有被赋值(包括空值): 不会被替代 1062 echo ${ABC:-123} 1063 ABC=HELLO 1064 echo ${ABC:-123} 1065 ABC= 1066 echo ${ABC:-123} #${变量名:-新的变量值} 或者 ${变量名:=新的变量值} #变量没有被赋值或者赋空值:会使用“新的变量值“ 替代 #变量有被赋值: 不会被替代 1116 echo ${abc=123} 1118 echo ${abc:=123} [root@MissHou ~]# unset abc [root@MissHou ~]# echo ${abc:+123} [root@MissHou ~]# abc=hello [root@MissHou ~]# echo ${abc:+123} 123 [root@MissHou ~]# abc= [root@MissHou ~]# echo ${abc:+123} #${变量名+新的变量值} #变量没有被赋值或者赋空值:不会使用“新的变量值“ 替代 #变量有被赋值: 会被替代 [root@MissHou ~]# unset abc [root@MissHou ~]# echo ${abc+123} [root@MissHou ~]# abc=hello [root@MissHou ~]# echo ${abc+123} 123 [root@MissHou ~]# abc= [root@MissHou ~]# echo ${abc+123} 123 #${变量名:+新的变量值} #变量没有被赋值:不会使用“新的变量值“ 替代 #变量有被赋值(包括空值): 会被替代 [root@MissHou ~]# unset abc [root@MissHou ~]# echo ${abc?123} -bash: abc: 123 [root@MissHou ~]# abc=hello [root@MissHou ~]# echo ${abc?123} hello [root@MissHou ~]# abc= [root@MissHou ~]# echo ${abc?123} #${变量名?新的变量值} #变量没有被赋值:提示错误信息 #变量被赋值(包括空值):不会使用“新的变量值“ 替代 [root@MissHou ~]# unset abc [root@MissHou ~]# echo ${abc:?123} -bash: abc: 123 [root@MissHou ~]# abc=hello [root@MissHou ~]# echo ${abc:?123} hello [root@MissHou ~]# abc= [root@MissHou ~]# echo ${abc:?123} -bash: abc: 123 #${变量名:?新的变量值} #变量没有被赋值或者赋空值时:提示错误信息 #变量被赋值:不会使用“新的变量值“ 替代 #说明:?主要是当变量没有赋值提示错误信息的,没有赋值功能