shell_77.Linux在函数中使用变量

在函数中使用变量
向函数传递参数

func1 $value1 10


然后函数可以用位置变量来获取参数值。来看一个使用此方法向函数传递参数的例子:

$ cat test6 
#!/bin/bash 
# passing parameters to a function 
function addem { 
    if [ $# -eq 0 ] || [ $# -gt 2 ] 
    then 
        echo -1 
    elif [ $# -eq 1 ] 
    then 
        echo $[ $1 + $1 ] 
    else 
        echo $[ $1 + $2 ] 
 fi 
} 
echo -n "Adding 10 and 15: " 
value=$(addem 10 15) 
echo $value 
echo -n "Let's try adding just one number: " 
value=$(addem 10) 
echo $value 
echo -n "Now try adding no numbers: " 
value=$(addem) 
echo $value 
echo -n "Finally, try adding three numbers: " 
value=$(addem 10 15 20) 
echo $value 
$ 

运行脚本

$ ./test6
Adding 10 and 15: 25 
Let''s try adding just one number: 20 
Now try adding no numbers: -1 
Finally, try adding three numbers: -1 
$ 


text6 脚本中的 addem 函数首先会检查脚本传给它的参数数目。如果没有参数或者参数多于两个,那么 addem 会返回-1。
如果只有一个参数,那么 addem 会将参数与自身相加。如果有两个参数,则 addem 会将二者相加。

由于函数使用位置变量访问函数参数,因此无法直接获取脚本的命令行参数。下面的例子无
法成功运行:

$ cat badtest1 
#!/bin/bash 
# trying to access script parameters inside a function 
function badfunc1 { 
 echo $[ $1 * $2 ] 
} 
if [ $# -eq 2 ] 
then 
 value=$(badfunc1) 
 echo "The result is $value" 
else 
 echo "Usage: badtest1 a b" 
fi 
$ 

运行脚本

$ ./badtest1 
Usage: badtest1 a b 
$ ./badtest1 10 15 
./badtest1: * : syntax error: operand expected (error token is "* 
") 
The result is 
$ 


尽管函数使用了$1 变量和$2 变量,但它们和脚本主体中的$1 变量和$2 变量不是一回事。
要在函数中使用脚本的命令行参数,必须在调用函数时手动将其传入:

$ cat test7 
#!/bin/bash 
# trying to access script parameters inside a function 
function func7 { 
 echo $[ $1 * $2 ] 
} 
if [ $# -eq 2 ] 
then 
 value=$(func7 $1 $2) 
 echo "The result is $value" 
else 
 echo "Usage: badtest1 a b"
fi 
$ 

运行脚本

$ ./test7 
Usage: badtest1 a b 
$ ./test7 10 15 
The result is 150 
$ 


在将$1 变量和$2 变量传给函数后,它们就能跟其他变量一样,可供函数使用了。

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

微辣已是极限

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值