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

  • 2
    点赞
  • 10
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值