13 函数

 

传递参数


在bash shell 编程中, 向函数传递的参数仍然是位置参数的方式来传递的, 而不能传递数组等其他形式的变量, 这与C语言
或JAVA语言的函数传递是不同的.

#!/bin/bash

half()
{
let "n = $1"
let "n = n/2"
echo "In function half() n is $n"
}


#函数调用
let "m = $1"
echo "Before the function half() is called, m is $m"
half $m # 注意, 函数执行时, 不带()
echo "After the function half() is called, m is $m"

函数返回值


有时需要脚本执行完成后返回特定的值来完成脚本的后继操作, 在linux shell编程中, 函数是通过 return 返回其退出状态, 0表示无错误, 1表示有错误
在脚本中可以有选择的使用 return 语句.
看来, 返回值, 只是一个标记, 跟脚本返回值一样.

函数调用


首先, 函数之间可以调用, 后边的可以调用自己(递归调用)或前边的函数
比如有多个函数, 顺序执行函数
show_week
show_number
show_square

在函数内部调用其他函数
choice()
{
case $char in
s)
square;;
c)
cube;;
p)
power;;
*)
echo "What you input is wrong!";;
esac
}

局部变量和全局变量


首先, 局部变量定义, 另外, 局部变量可以和全局变量同名, 并且在函数内, 全局变量会被局部变量隐藏(跟C一样)
use_local_var()
{
local text="local variable"
}
另外, 如果你在函数外部定义了一个变量, 在函数内部没有使用 local 来声明跟外部同名的变量, 那么, 这两个变量实际上是一个地址,
如果你修改了这个变量在函数内部, 那么也会直接影响着函数外边的结果, 例如:

#!/bin/bash
count=1
echo "$count" # 结果是1

int_count()
{
count=2
echo "$count2" # 结果是2
}

echo "$count" # 结果是2, 注意这里, 外部变量的结果已经变了

转载于:https://www.cnblogs.com/moveofgod/p/4656718.html

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值