目录

一、理论

1.shell函数

2.函数传参

3.函数变量的作用范围

4.递归

5.函数位置变量与脚本位置变量区别

6.创建库

二、实验

1.实验一

2.实验二


一、理论

1.shell函数

(1)概念

将命令序列按格式写在一起,可方便重复使用命令序列。

     ①  避免代码重复;

     ②  把大工程分割为若干小块,代码的可读性更强。

shell脚本grep的返回值 shell脚本函数返回值获取_运维

(2)shell函数定义

      ① function  函数名 () {

          函数内容

          }

      ② function 函数名 {

          函数内容

          }

      ③ 函数名 () {

          函数内容

          }

(3)函数返回值

      ① exit退出函数,脚本中使用exit退出函数时直接退出整个脚本,脚本后续内容不再执行。

      ② return退出函数,脚本使用return退出函数时只退出函数,不影响脚本后续内容执行。

           退出状态码必须是0~255,超出时值将为除以256取余。

           0是成功,1是失败,返回非0,也是失败

(4)函数使用步骤

      ① 首先是定义函数

      ② 其次是调用函数(注意:若定义完成不调用则函数无效)

      ③ 查看系统限制所有函数:declare -F

      ④ 查看函数定义详细内容:declare -f  函数名

      ⑤ 删除函数:unset  函数名

2.函数传参

在Shell中,调用函数时可以向其传递参数。

在函数体内部,通过$n的形式来获取参数的值。

1.第一种方法
sum1() {
sum=$[$1 + $2]
echo $s
}
read -p "输入第一个数" first
read -p "输入第二个数" second
sum1 $first $second

2.第二种方法
sum() {
s=$[$1 + $2]    ///$1 $2 传递位置参数
echo $s
}
sum $1 $2    ///$1 $2 代表执行脚本函数时命令后面跟的两个参数位置参数

3.函数变量的作用范围

(1)全局变量 (函数外变也不变)

函数在shell脚本中仅在当前shell环境中有效Shell脚本中变量默认全局有效

(2)局部变量(函数外变则变)

将变量限定在函数内部使用local命令

4.递归

函数调用自己本身的函数

(1)阶乘

原理:4 * $result (3* $result (2* result(1) ) )

shell脚本grep的返回值 shell脚本函数返回值获取_调用函数_02

shell脚本grep的返回值 shell脚本函数返回值获取_linux_03

(2)递归目录

嵌套函数,$2为空值

shell脚本grep的返回值 shell脚本函数返回值获取_调用函数_04

 

shell脚本grep的返回值 shell脚本函数返回值获取_shell脚本grep的返回值_05

5.函数位置变量与脚本位置变量区别

(1)当函数中有$1、$2等位置变量时表示的是调用函数时函数名后跟着的位置变量12

(2)函数外的$1、$2等才表示是执行脚本时脚本名称后跟着的位置变量12

6.创建库

在一个脚本当中建立多个函数,用于别的脚本来调用该库中的函数。

jiafa() {
   echo $[$1 + $2]
}

chengfa() {
   echo $[$1 * $2]
}

jianfa() { 
   echo $[$1 - $2]
} 

chufa() {
if [ $2 -ne 0 ];then
   echo $[$1 / $2]
else
   echo "$2不能为0"
fi
}

在脚本中调用

#!/bin/bash
.  /root/3.sh
read -p "输入第一个参数值:" first
read -p "输入第二个参数值:" second

result1=`jiafa $first $second`
result3=$(chengfa $first $second)
result2=`jianfa $first $second`
result4=$(chufa $first $second)

echo $result1
echo $result2
echo $result3
echo $result4

二、实验

1.实验一

函数能够接受一个参数,参数为用户名; 判断一个用户是否存在 如果存在,就返回此用户的shell 和 UID ;并返回正常状态值; 如果不存在,就说此用户不存在;并返回错误状态值;在主程序中调用函数。

(1)脚本截图

主程序

shell脚本grep的返回值 shell脚本函数返回值获取_linux_06

调用函数

shell脚本grep的返回值 shell脚本函数返回值获取_运维_07

(2)运行结果

shell脚本grep的返回值 shell脚本函数返回值获取_运维_08

shell脚本grep的返回值 shell脚本函数返回值获取_运维_09

2.实验二

(1)脚本截图

1-100奇偶和

shell脚本grep的返回值 shell脚本函数返回值获取_bash_10

(2)运行结果

shell脚本grep的返回值 shell脚本函数返回值获取_shell脚本grep的返回值_11