shell中函数的作用
命令合集,完成特定功能的代码块,在shell中定义函数可以使用代码模块化,便于复用代码,加强可读性,函数和变量类似,先定义才可调用,如果定义不调用则不会被执行
传参 $1,$2(函数里的$n不是传参传进来的)
如果要使用传参必须在的调用函数的后面加上$n
#!/bin/bash name(){ if [ -z $1 ];then echo "不能为空" exit fi if [ -f $1 ];then echo "$file 已存在" else echo "$file 不存在" fi } name $1(如果写$*)表示所有传参都可以显示 [root@web01 ~]# sh hh.sh user.txt 已存在
变量 local
返回值 return $[1-255]
示例:
[root@web01 ~]# vim hs.sh #!/bin/bash name(){ echo 100 retrue 33 } name [root@web01 ~]# sh hs.sh 100 [root@web01 ~]# echo $? 33
数组
索引类似于书的每一页
数组赋值方式
数组赋值方式一:针对每个索引进行赋值
数组名[索引]=变量值
[root@web01 ~]# array[0]=kk [root@web01 ~]# array[1]=ll 查看全部数组 [root@web01 ~]# echo ${array[*]} kk ll [root@web01 ~]# echo ${#array[*]} 2 看页数 [root@web01 ~]# echo ${!array[*]} 0 1 删除某一页 [root@web01 ~]# echo ${array[*]} kk ll [root@web01 ~]# unset array[0] [root@web01 ~]# echo ${array[*]} ll
数组赋值方式二:一次赋多个值
[root@web01 ~]# array=(q w e r) [root@web01 ~]# echo ${array[*]} q w e r [root@web01 ~]# echo ${!array[*]} 0 1 2 3 数值的索引从0开始 [root@web01 ~]# array=( 1 2 3 "kk wo" [10]=haha) [root@web01 ~]# echo ${array[*]} 1 2 3 kk wo haha [root@web01 ~]# echo ${!array[*]} 0 1 2 3 10 [root@web01 ~]# echo ${array[3]} kk wo
查看数组
declare -a查看普通数组,索引全为数字的数组
[root@web01 ~]# declare -a declare -a BASH_ARGC='()' declare -a BASH_ARGV='()' declare -a BASH_LINENO='()' declare -ar BASH_REMATCH='()' declare -a BASH_SOURCE='()' declare -ar BASH_VERSINFO='([0]="4" [1]="2" [2]="46" [3]="2" [4]="release" [5]="x86_64-redhat-linux-gnu")' declare -a DIRSTACK='()' declare -a FUNCNAME='()' declare -a GROUPS='()' declare -a PIPESTATUS='([0]="0")' declare -a array='([0]="1" [1]="2" [2]="3" [3]="kk wo" [10]="haha")'
declare -A 查看关联数组
[root@web01 ~]# declare -A declare -A BASH_ALIASES='()' declare -A BASH_CMDS='()' declare -A _xspecs='([freeamp]="!*.@(mp3|ogg|pls|m3u)" [cdiff]="!*.@(dif?(f)|?(d)patch)?(.@([gx]z|bz2|lzma))" [bibtex]="!*.aux" [rgview]="*.@(o|so|so.!(conf|*/*)|a|[rs]pm|gif|jp?(e)g|mp3|mp?(e)g|avi|asf|ogg|class)" [oowriter]="!*.@(sxw|stw|sxg|sgl|doc?([mx])|dot?([mx])|rtf|txt|htm|html|?(f)odt|ott|odm)" [chromium-browser]="!*.@(?([xX]|[sS])[hH][tT][mM]?([lL]))" [tex]="!*.@(?(la)tex|texi|dtx|ins|ltx|dbj)" [zathura]="!*.@(cb[rz7t]|djv?(u)|?(e)ps|pdf)" [netscape]="!*.@(?([xX]|[sS])[hH][tT][mM]?([lL]))" [acroread]="!*.[pf]df" [makeinfo]="!*.texi*" [kwrite]="*.@(o|so|so.!(conf|*/*)|a|[rs]pm|gif|jp?(e)g|mp3|mp?(e)g|avi|asf|ogg|class)" [gview]="*.@(o|so|so.!(conf|*/*)|a|[rs]pm|gif|jp?(e)g|mp3|mp?(e)g|avi|asf|ogg|class)" [qiv]="!*.@(gif|jp?(e)g|tif?(f)|png|p[bgp]m|bmp|x[bp]m|rle|rgb|pcx|fits|pm|svg)" ......
定义关联数组
[root@web01 ~]# declare -A arrar [root@web01 ~]# declare -A declare -A arrar='()' [root@web01 ~]# arrar[name]=kk [root@web01 ~]# arrar[age]=25 [root@web01 ~]# arrar[haha]=uu [root@web01 ~]# declare -A declare -A arrar='([name]="kk" [age]="25" [haha]="uu" )' 查看数组的内容 [root@web01 ~]# echo ${arrar[*]} kk 25 uu 查看关联数组的索引 [root@web01 ~]# echo ${!arrar[*]} name age haha
遍历数组
[root@web01 ~]# let array[m]++ [root@web01 ~]# echo ${array[*]} 1 [root@web01 ~]# echo ${!array[*]} m [root@web01 ~]# let array[m]++ [root@web01 ~]# echo ${array[*]} 2
继续阅读

我的微信
这是我的微信扫一扫
评论