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

本文介绍了Shell脚本中的函数概念,包括如何定义和调用函数,以及return命令的使用。通过示例展示了在命令行中定义临时函数的方法,解释了函数与用户已定义命令冲突的情况。还提供了一个用户管理的脚本案例,演示了函数在处理用户输入和交互中的应用。最后,讨论了函数返回值的设定及其对命令状态值的影响。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

1、什么是函数?

在这里插入图片描述

2、如何定义函数

在这里插入图片描述

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
在这里插入图片描述
要求:输入一个用户名,判断是否存在,若存在继续输入,若不存在,为其建立用户,然后显示用户已经创建,继续输入,直到输入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的用法及功能

在这里插入图片描述
(1)return返回命令状态值的设定
实验脚本如下:

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

love()
{
        echo "i love you"
}

在这里插入图片描述

####当我们不设置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、实例

在这里插入图片描述
在这里插入图片描述

#!/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
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值