函数,数组

root
233
文章
0
评论
2020年2月5日20:03:57 评论 2771字阅读9分14秒

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

 

继续阅读
weinxin
我的微信
这是我的微信扫一扫
  • 文本由 发表于 2020年2月5日20:03:57
  • 除非特殊声明,本站文章均为原创,转载请务必保留本文链接
网站数据会滚脚本 shell

网站数据会滚脚本

网站数据会滚脚本 当代码经过测试环境后,正式进入生产环境,突然发现有问题,这时候需要立刻还原数据,写一个简单的网站代码回滚脚本 java项目的 #!/bin/bash Web_Dir=/server/...
三剑客练习 shell

三剑客练习

三剑客练习 grep I am hewenfu teacher! I teach linux. test I like badminton ball ,billiard ball and chines...
awk练习 shell

awk练习

awk 1.列出UID=0的用户 # awk -F : '$3==0' /etc/passwd root:x:0:0:root:/root:/bin/bash 2.列出系统的用户 # awk -F :...
匿名

发表评论

匿名网友 填写信息

:?: :razz: :sad: :evil: :!: :smile: :oops: :grin: :eek: :shock: :???: :cool: :lol: :mad: :twisted: :roll: :wink: :idea: :arrow: :neutral: :cry: :mrgreen: