shell脚本学习_函数_5

学习目标:

学习shell脚本函数使用

总结:

1- 函数使用和C语言类似。函数调用直接写函数名和传入参数;函数返回值可以借用$?处理。

2- shell中也有局部变量全局变量。局部变量加关键字local,不加的都是全局变量。

正文

1- 基本语法

a- 函数基本语法:有返回值、无返回值

/*1- 不关心返回值*/
#函数定义
func() 
{
   do something
}

#函数调用。函数调用可以传入参数,利用位置变量进行处理
func param



/*2- 利用返回值*/
#函数定义
func() 
{
   do something
   return xxx
}

#函数调用。函数调用可以传入参数,处理利用$?,还可以单独定义一个变量进行处理
func param
#打印函数返回值
echo "\$?=$?"

b- 局部、全局变量

局部变量加关键字local,不加的都是全局变量。结合后面例子理解

func()
{
    #全局变量g_para;局部变量l_para
    g_para=$1
    local l_para=$2
}

2-  示例

I-  检查用户是否存在

关于wc用法参考:https://www.cnblogs.com/cloudPython/p/4893221.html

对于who |grep "^$1" |wc -l命令是检查用户个数,对于输入不是完全匹配,可以过grep滤掉(找下grep过滤用法)。

#!/bin/bash
check_user()
{
	check_cnt=`who |grep "^$1" |wc -l `
	if [ $check_cnt -eq 1 ]
	then
		return 0
	else
		return 1
	fi
}

while true
do
	echo -n "Please Input username:"
	read username
	check_user $username	
	if [ $? -eq 0 ]
	then
		echo "$username online"
	else
		echo "$username not online"
	fi
done

II- 全局变量、局部变量练习

调用函数func(),在函数体内部将第一个参数分别赋值给全局变量g_para和局部变量l_para。在函数体外部打印局部变量和全局变量。可以看到全局变量可以打印到,局部变量打印不到。

脚本:

#!/bin/bash
func()
{
	g_para=$1
	local l_param=$1
	echo "\$1=$1"
	echo "\$2=$2"
	return 12
}


echo "func begain"
func hello world
echo "\$?=$?"
echo "g_para=$g_para"
echo "l_local=$l_local"
echo "func end"

结果:

func begain
$1=hello
$2=world
$?=12
g_para=hello
l_local=
func end
发布了38 篇原创文章 · 获赞 5 · 访问量 5639

猜你喜欢

转载自blog.csdn.net/u010743406/article/details/104304579