数组作为一种特殊的数据结构在任何一种变成语言中都可以看见,数组在shell中也是非常重要的一部分,它借助索引将多个独立的数据存储为一个集合。
数组
普通数组只能使用整数作为数组的索引值
定义数组:Array[key]=value
单行一列值:
# array_pt=(1 2 3 4 5 6) //使用空格进行分割
打印数组
# echo ${array_pt[0]}
1
# echo ${array_pt[1]}
2
# echo ${array_pt[2]}
3
# echo ${array_pt[3]}
4
# echo ${array_pt[5]}
6
# index=4
# echo ${array_pt[$index]}
5
打印数组中的所有值
# echo ${array_pt[*]}
1 2 3 4 5 6
# echo ${array_pt[@]}
1 2 3 4 5 6
删除数组
# unset array_pt[1] //删除数组中的第二个元素
# unset array_pt //删除整个数组
数组的提取
假如定义了一个数组:array=([0]=one [1]=two [2]=three [3]=four)
# array=([0]=one [1]=two [2]=three [3]=four)
# echo ${array[@]:0} //提取所有元素
one two three four
# echo ${array[@]:1} //提取第一个元素后的所有元素
two three four
# echo ${array[@]:0:2} //提取第一个元素到第二个元素之前的所有元素
one two
# echo ${array[@]:1:2}
two three
字串删除
# echo ${array[@]:0} //提取所有元素
one two three four
左边开始最短匹配 #``:"t*e"
,这将匹配到"thre"
# echo ${array[@]#t*e}
one two e four
左边开始最长的匹配##
,这将匹配到"three"
# echo ${array[@]##t*e}
one two four
从字符串的结尾开始最短的匹配%
# echo ${array[@]%o}
one tw three four
从字符串的结尾开始最长的匹配
# echo ${array[@]%%o}
one tw three four
字串替换
# echo ${array[@]//o/} //替换字符串中的o为空白`//`
ne tw three fur
替换字符串前端子串
# echo ${array[@]/#o/k} //替换最前面的o为k`/#`
kne two three four
替换字符串后端子串
# echo ${array[@]/%o/k} //替换字符串最后端的字符o为k`%o`
one twk three four
关联数组
关联数组从bash 4.0开始被引入,关联数组的索引值可以使用任意的文本。关联数组在很多操作中很有用。
关联数组的声明:
# declare -A array_var
使用内嵌索引-值列表法将元素添加到关联数组:
# array_var=([one]=jerry [two]=john [three]=tom [five]=rex [six]=coco)
打印元素:使用独立的索引-值进行赋值:
# echo ${array_var[one]}
jerry
# echo ${array_var[two]}
john
列出索引:列出索引值的方法也可以用在普通数组上
# echo ${!array_var[*]}
one five six two three
列出所有的元素
# echo ${array_var[*]}
jerry rex coco john tom
别名
别名就是提供一种便捷的方式来完成某些长串命令的操作。省去不必要的麻烦,提高效率。一般可以是函数或者alias
命令来实现。
alias举例
alias nginxrestart='/usr/local/webserver/nginx/sbin/nginx -s reload'
这样设置之后以后可以使用nginxrestart这个命令来代替/usr/local/webserver/nginx/sbin/nginx -s reload了。这样设置重启之后就会失效,所以需要将它放入~/.bashrc文件中。
echo 'alias nginxrestart="/usr/local/webserver/nginx/sbin/nginx -s reload"' >> ~/.bashrc
系统已经定义的别名
# alias
alias cp='cp -i'
alias egrep='egrep --color=auto'
alias fgrep='fgrep --color=auto'
alias grep='grep --color=auto'
alias l.='ls -d .* --color=auto'
alias ll='ls -l --color=auto'
alias ls='ls --color=auto'
alias mg='echo magedu'
alias mv='mv -i'
alias rm='rm -i'
alias which='alias | /usr/bin/which --tty-only --read-alias --show-dot --show-tilde'
别名转义
有些命令不是总是希望使用别名,可以在命令之前输入反斜杠\
来忽略所定义过的别名。
# \command
网友评论