Bash Shell 中的 函数使用 注意事项 及 return 退出函数

文章目录

      • 1、函数介绍
      • 2、函数定义的方式:
      • 3、注意点:
      • 4、调用函数:
      • 5、同一个脚本具有多个相同函数名 时:
      • 6、调用函数时,通过 位置变量 传递参数:
      • 8、将函数赋值给变量:
      • 9、调用函数内部的参数:
      • 10、重点: return 退出函数并返回退出码


 

        此链接通往 Bash Shell 编程学习的目录导航 ,从入门到放弃,感兴趣的可以去看看:


1、函数介绍

       
        Shell 允许将 一组命令集 或 语句 形成一个可用块!这个可用块 就称之为 Shell 函数!

        优点: 只需定义一次,后期便可随时使用! 无需在 shell 脚本中添加重复的语句块!


 

2、函数定义的方式:

方式1:
function functionname(函数名)
{ 
cmd...
}


方式2:
functionname(){
cmd
}

 


3、注意点:

1、函数名称 在 当前脚本 必须具有唯一性!但是,如果有多个相同名称的函数,则在调用函数时以最后一个为准1

2、调用函数时可以传递参数,函数内部可以使用位置变量 $1 $2..

3、 函数值 可以赋值给变量使用! 格式:  varname=$(functionname),此时的函数相当于一个命令!

4、调用函数:

1)、创建函数:
#!/bin/bash                                                                                                          
function abc {
 echo "hello"
}

或:

aaa() {
  echo "nihao"
}



2)、调用函数:

当你创建了函数之后,直接写 函数名即可调用!
#!/bin/bash                                                                                                          
function abc {
 echo "hello"
}

abc    

root@zhengzelin:~# ./function.sh 
hello

 

5、同一个脚本具有多个相同函数名 时:

function abc {
 echo "hello"
}

abc() {
  echo "nihao"
}

function abc {
  echo "baibai~"
}

abc


执行:

root@zhengzelin:~# ./function.sh 
baibai~

 

6、调用函数时,通过 位置变量 传递参数:

#!/bin/bash
function abc {
 echo $1
}

aaa() {
  echo $2
}


abc www.baidu.com
aaa fly sky                                                                                                         

执行:

root@zhengzelin:~# ./while1.sh 
www.baidu.com
sky               # 这里 函数 aaa 调用的位置变量是 $2 ,所以是 sky

 

8、将函数赋值给变量:

# 注意: 函数赋值时,相当于一个命令,你得使用 `functionname` 或 $(functionname)


#!/bin/bash
function abc {
 echo $1
}

varname=$( abc 111 )
echo $varname

执行:

root@zhengzelin:~# ./while1.sh 
111

9、调用函数内部的参数:

#!/bin/bash                                                                                                          
unction abc {
 let a=5*10
 echo "测试调用参数"
 echo $a
}

echo "5*10=$a"


执行查看结果:
root@zhengzelin:~# ./while1.sh 
5*10=

发现没有成功,为什么调用函数内部的参数却没有成功呢? 这是因为你得先运行一次函数,"才可以正常调用函数内部参数"

——————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————

#!/bin/bash                                                                                                          
unction abc {
 let a=5*10
 echo "测试调用参数"
 echo $a
}

abc                   # 调用abc函数
echo "5*10=$a"

root@zhengzelin:~# ./while1.sh 
测试调用参数
50
5*10=50

 


 

10、重点: return 退出函数并返回退出码

#!/bin/bash
function abc {
 let a=5*10
 echo $a
 return 3
 echo "测试调用参数"
}

abc


查看执行结果:

root@zhengzelin:~# ./while1.sh 
50
root@zhengzelin:~# echo $?
3


得知:
1、 return 退出函数,并且 return 函数之后的 cmd 不再执行!

2、 return 后面跟数字 ,代表 退出函数后 返回的状态码;如果 return 后面不加 数字,默认成功返回码是 0!



注意:
function abc {
 let a=5*10
 echo $a
 return 3
 echo "测试调用参数"
}

abc
echo hello

root@zhengzelin:~# ./while1.sh 
50
hello
root@zhengzelin:~# echo $?
0

这里返回码为0 并非3 是因为 最后执行了 "echo hello" 命令!

如果你将 functionname 放到最后调用函数,那么返回码就为你规定的数字了!

注意:

        return与exit 的区别:return 和 exit 都可以返回退出码,但是不同的是,return是退出函数,而exit是退出整个脚本。

你可能感兴趣的:(shell)