shell脚本之函数、函数关键字return

1、什么是函数?

在这里插入图片描述

2、如何定义函数

shell脚本之函数、函数关键字return_第1张图片

3、案例

(1)实现自定义命令行(临时命令行的定义,只在当前进程中有效)

#!/bin/bash
hell()     //定义函数
{
     
        echo "hello wolrd"      函数主体

love()
{
     
        echo "i love you"
}

运行:

####运行之前要将命令读入生效
[root@server1 shells]# source han_shu.sh 
[root@server1 shells]# hell
hello wolrd
[root@server1 shells]# love
i love you

当定义的命令行与当前用户定义的命令相同时,该脚本在读入变量时会爆语法错误:

[root@server1 shells]# source han_shu.sh 
bash: han_shu.sh: line 2: syntax error near unexpected token `('
bash: han_shu.sh: line 2: `hello()'

但显然不是语法错误,而是该变量与用户定义变量冲突。定义当前用户bash信息在/home/xxx/.bashrc
shell脚本之函数、函数关键字return_第2张图片
要求:输入一个用户名,判断是否存在,若存在继续输入,若不存在,为其建立用户,然后显示用户已经创建,继续输入,直到输入exit,将退出程序。
代码如下:

 #!/bin/bash
  2 NAME=""
  3 ADD()
  4 {
     
  5  useradd $NAME
  6  read -s -p "please input password:"  PASSWD
  7  echo "$PASSWD" |passwd --stdin $NAME &> /dev/null
  8  echo "$NAME is created"
  9  READ
 10 }
 11 
 12 TEST()
 13 {
     
 14   id $NAME  &> /dev/null
 15   [ $? -eq 0 ]  &&  echo "$NAME is exit" && READ
 16   [ $?  -ne 0 ] && ADD
 17 }
 18 READ()
 19 {
     
 20   read -p "please  input username:" NAME
 21   [ -z $NAME ] && READ || [ $NAME = "exit" ]  && echo "bye" && exit ||     TEST
 22 
 23 }
 24 
 25 READ

4、return的用法及功能

shell脚本之函数、函数关键字return_第3张图片
(1)return返回命令状态值的设定
实验脚本如下:

#!/bin/bash
hell()     //定义函数
{
     
        echo "hello wolrd"      函数主体

love()
{
     
        echo "i love you"
}

shell脚本之函数、函数关键字return_第4张图片

####当我们不设置return值时,运行成功默认返回0;
[root@server1 ~]# love
i love you
[root@server1 ~]# echo $?
0
#####设定love函数的返回值为10,再查看上一命令状态值:
[root@server1 shells]# love
i love you
[root@server1 shells]# echo $?
10

5、函数的调用

(1)当前命令行调用函数(只针对当前bash进程生效)
如前面所提的临时命令行设置,直接source将脚本中的函数生效,然后就可以在本进程中调用。

[root@server1 shells]# love
i love you
[root@server1 shells]# /bin/bash
[root@server1 shells]# love
bash: love: command not found...

(2)定义到用户的环境变量 (~/.bashrc)
(3)脚本中调用(注意传参)

6、实例

shell脚本之函数、函数关键字return_第5张图片
shell脚本之函数、函数关键字return_第6张图片

#!/bin/bash
function input_context()
{
     
input=""
while [ -z "$input" ]
do
        read -p "$1" input
done
}

input_context "please input your name:"      //调用函数,并给它传参。即”$1“
name="$input"
input_context "please input your age:"
age="$input"
input_context "please input your sex:"
sex="$input"
echo -e  "name:$name\nage:$age\nsex:$sex"

执行结果:

[root@server1 shells]# sh jj.sh
please input your name:ky
please input your age:24
please input your sex:nv
name:ky
age:24
sex:nv

你可能感兴趣的:(shell脚本)