shell函数传参和返回


一、一个简单shell函数


#!/bin/bash
function  SayHi()
{
    echo  “Hello World”
}

SayHi

输出结果:Hello World

这里需要注意:
所有函数必须在使用前定义;调用函数仅使用其函数名即可。


那么,shell函数能否类似python那样,实现传参和返回结果呢?
自然是可以的。


二、shell函数传参


在shell中调用函数可以向其传递参数;
在shell函数体内部,通过 $n 来接收参数值。
比如:

#!/bin/bash
function  SayHi()
{
   OneSay=$1
   TwoSay=$2
   TenSay=${10}
   echo $OneSay
   echo $TwoSay
   echo $TenSay
}

SayHi  “Hello One”  “Hello Two”   3 4 5 6 7 8 9 "Hello Ten" 11

输出结果:
Hello One
Hello Two
Hello Ten

这里有两个注意点:

1、当传给函数的参数是一段文本的时候,建议用双引号引起来,否则会出现截断。比如:

SayHi  “Hello One” 
#或者
One=“Hello One”;  SayHi  “$One”

2、$10并不能获取第十个参数,需要用 ${10};
事实上,当 $n 的 n>=10 时,都需要通过 ${n} 来获取参数。


三、shell函数返回结果


#!/bin/bash
function  SayHi()
{
   OneSay=$1
   TwoSay=$2
   TheSay=$3
   ForSay=$4
   FiveSay=$5
   SixSay=$6
   SevSay=$7
   EigSay=$8
   NinSay=$9
   TenSay=${10}
   echo $OneSay
   echo $TwoSay
   echo $TenSay
   
   return $(($TheSay+$ForSay+$FiveSay+$SixSay+$SevSay+$EigSay+$NinSay))
}

SayHi  “Hello One”  “Hello Two”  3 4 5 6 7 8 9 "Hello Ten" 
echo "The sum of the numbers passed : $? "

输出结果:
Hello One
Hello Two
Hello Ten
The sum of the numbers passed :42

由上可知:shell函数的返回值,在调用该函数后通过 $? 来获取。

这里有个注意点:shell中的 $? ,仅仅对其上一个函数指令的返回负责。
一旦上一个函数返回后,
没有获取返回值而执行了其他逻辑的话,
那么,其返回值将不能再通过 $? 获得,
此时 $? 只是显示最后命令的退出状态: 0表示运行正常,其他任何值表明出错。

举个简单例子说明:

#!/bin/bash
function  SayHi()
{
   OneSay=$1
   TwoSay=$2
   return $(($OneSay+$TwoSay))
}

SayHi  1 2

echo "The sum of the numbers passed : $? "
echo $?

输出结果:
The sum of the numbers passed :3
0

发布了37 篇原创文章 · 获赞 24 · 访问量 3091

猜你喜欢

转载自blog.csdn.net/weixin_44648216/article/details/103643181