Shell脚本函数 实验

Shell 函数

命令序列按照格式写在一起,用函数的方式调用并进行重复使用命令序列。这就是它的核心作用
使用函数可以避免代码重复,函数可以将大的工程分割成若干小的功能模块,提高代码的可读性。

函数的基本格式写法有两种,如下:

第一种方式:

Shell脚本函数 实验_第1张图片

第二种写法:

Shell脚本函数 实验_第2张图片

 

区别在于function可以替换为括号()

return

return:表示退出函数并返回一个退出值,用$?可以显示这个值,return一般会写在函数最后一行退出值是有范围的:0—255,超过255会除以256再取余

shell脚本中return的返回值默认就是0,或者非0的返回码,在shell脚本中意义不大,主要是作为判断结果,判断函数的执行情况。 

exit:作用于整个脚本,立即终止,没有返回码,脚本会立刻停止运行

exit 0 :表示程序正常结束             

exit 1 :程序是异常退出的

$?:在shell脚本中就是exit 0

函数传参:在shell中,调用函数可以传递参数,位置变量来传参,我们在函数内部可以定义位置变量。

在函数中,local仅用于函数的内部变量;定义了local变量就代表内部变量,只能用在函数内部;不加就是默认为全局变量。如:

Shell脚本函数 实验_第3张图片Shell脚本函数 实验_第4张图片

递归函数

函数调用自己本身的函数, 

例:用函数递归的方式,写一个阶乘,要求阶乘数可以自定义

Shell脚本函数 实验_第5张图片

 

以求6的阶乘为例,6被调用到函数的命令序列当中,先判断是否为1,6不为1执行else,6在函数内部执行减1(temp)并且和6再相乘,并且函数重复执行,直到最后值为1

 local  result=$(abc  $temp)     意思为 abc调用  local  temp=$(($1-1))  中得到的数,得到的数进入函数的命令序列      并且每次减一都调用一次循环执行直到最后得到的值为1不再进行判断,最后把累乘的结果打印出来

例:函数调用自己,打印出自定义目录下所有的目录和文件   /opt目录下

Shell脚本函数 实验_第6张图片

实验

1. 判断return值

[root@localhost opt]# vim ggg.sh 
ky30 () {
  read -p"输入一个数字:“ a
  a=$(($a*2))
  return
}
ky30
#如果这个运算结果不正确,
  a=10.88
  result=$?
  echo $?
#这种情况下,return的值,是多少呢?

此时return值为非0

              

2. 使用函数库,创建一个yum源,然后要在脚本中安装一个服务nginx

[root@localhost opt]# vim ck.sh 
ck () {
wget -O /etc/yum.repos.d/CentOS-Base.repo https://mirrors.aliyun.com/repo/Centos-7.repo 
yum clean all && yum makecache
yum -y install epel-release.noarch
}
az () {
yum -y install $1
}
vim dy.sh 
./opt/hanshuku.sh
ck
read -p "输入要安装的软件" a
az $a 

你可能感兴趣的:(linux,运维,服务器)