数组分类
普通数组:只能使用整数作为数组索引(元素的下标)
关联数组:可以使用字符串作为数组索引(元素的下标)
- 普通数组
#一次赋予一个值
数组名[索引下标]=值
array[0]=1
array[1]=2
array[2]=3
array[0]=zss
array[1]=ming
array[2]=shy
#一次赋予多个值
数组名=(元素1 元素2 元素3 ...)
names=(harry zss shy tom)
arr1=(`cat /etc/passwd`)
#一行就是一个元素
arr2=(harry zss shy "jack")
arr3=(1 2 3 4 "1234" [10]=linux)
#赋值的时候 可以直接定义第几个是多少
declare -a
#查看定义的普通数组
- 关联数组
#首先声明关联数组
declare -A ar1
declare -A ar2
#数组赋值
#一次赋一个值
ar1[linux]=one
ar1[java]=two
#一次赋值多个
ar1=([garry]=hao [jack]=huai [zss]=666)
declare -A
#查看定义的关联数组
declare -A zss
#自定义一个新的关联数组
let zss[linux]++
#declare -A zss='([linux]="1" )'
let zss[java]++
#让元素做i++ 里面就存在了
#declare -A zss='([java]="1" [linux]="1" )'
数组的读取
${数组名[索引下标]}
echo ${arr1[0]} 获取数组里的第一个元素
echo ${arr1[*]} 获取数组里的所有元素
echo ${#arr1[*]}获取数组里所有元素个数
echo ${!arr1[@]}获取数组元素的索引下标
echo ${arr1[@]:1:2} 访问指定元素;1代表从下标1的元素开始获取;2代表获取后面几个元素
取出一个目录下的目录和文件
A=/zss/zss.txt
echo $A
dirname $A #取出目录
/zss
basename $A #取出文件
zss.txt
变量内容的删除和替换
一个"%"代表从右往左去掉一个/key/ (中间的关键字)
两个"%%"代表从右往左最大去掉/key/
一个"#"代表从左往右去掉一个/key/
两个"##"代表从左往右最大去掉/key/
url=www.baidu.com
echo ${#url} #获取变量字符串长度
13
echo ${url#*.} #从左往右去掉.前面的内容
baidu.com
echo ${url##*.}#从左往右去掉所有.前面的内容
com
echo ${url%%.*}#从右往左去掉所有.后面的内容
www
echo ${url%.*}#从右往左去掉.后面 的内容
www.baidu