Shell函数返回值
1、返回值的⽅式:
⽅法⼀:return
⽅法⼆: echo
2、return和echo使⽤场景区别:
shell脚本返回执行结果
(1).使⽤return返回值:
使⽤return返回值,只能返回1-255的整数
函数使⽤return返回值,通常只是⽤来供其他地⽅调⽤获取状态,因此通常仅返回0或1;0表⽰成功,1表⽰失败
(2).使⽤echo返回值:
使⽤echo可以返回任何字符串结果
通常⽤于返回数据,⽐如⼀个字符串值或者列表值
3、场景⽰例
(⼀) return使⽤场景
函数通过return返回⼀个整数,这种场景通常是⽤来做判断的,也就是说在执⾏完函数之后,需要根据它的返回值做判断,通0表⽰成功,⾮0都是表⽰失败。
#!/bin/bash
this_pid=$$
# 判断nginx进程是否正在运⾏
function is_nginx_running
{
ps -ef | grep nginx | grep -v grep | grep -v $this_pid &>/tmp/null
if [ $? -eq 0 ];then
# return 0,也可以省略0直接return,两个是等价
return
else
return 1
fi
}
# return在函数中的返回值,只是⽤来做状态判断的,根据状态值做下⼀步判断
# 函数的返回值为0时,表⽰nginx服务运⾏正常输出 && 后字符串,否则返回 ||后字符串
is_nginx_running && echo "Nginx is running" || echo "Nginx is stoped"
# 运⾏脚本
~ % ho_return_nginx.sh
Nginx is stoped
~
% sudo nginx  # Mac 使⽤,Linux为 systemctl start nginx
~ % ho_return_nginx.sh
Nginx is running
(⼆) echo使⽤场景
函数通过echo返回值,通常是返回数据⽤的,以供程序的其它地⽅使⽤。
#!/bin/bash
# 获取整个Linux系统上所拥有的所有⽤户
function get_users
{
# users=`cat /etc/passwd | cut -d: -f1` # linux使⽤
# Mac 使⽤
users=`cat /etc/passwd | tail -n+11 | cut -d: -f1 | cut -d_ -f2` echo $users
}
# 执⾏该函数,返回值为⽤户列表
# get_users
# 遍历⽤户列表对⽤户名做处理
user_list=`get_users`
index=1
for user in $user_list
do
echo "This $index user is : $user"
index=$(($index+1))
done
# 运⾏脚本
~ % ho_sys_user.sh
This 1 user is : nobody
This 2 user is : root
... ...
This 109 user is : oahd

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。