shell脚本之--函数返回值

使用shell脚本时函数的返回值有三种。

  1. echo
  2. return
  3. 全局变量

1、echo 是返回函数值。

#!/bin/bash

function addarray {
    local sum=0
    local newarray
    newarray=(`echo "$@"`)
    for value in ${newarray[*]};do
        sum=$[ $sum + $value ]
    done
    echo $sum
}

myarray=(1 2 3 4 5)
echo The original array is ${myarray[*]}
arg1=`echo ${myarray[*]}`
result=`addarray $arg1`
echo The result is $result

输出结果:

original array is 1 2 3 4 5
The result is 15

2、return 返回的是状态,但配合$?可以实现返回函数的值的目的。(必须返回的是数值)

Shell 中的返回值表示的是函数的退出状态:返回值为 0 表示函数执行成功了,返回值为非 0 表示函数执行失败(出错)了。if、while、for 等语句都是根据函数的退出状态来判断条件是否成立。配合使用 ? 实 现 返 回 函 数 结 果 , ?实现返回函数结果, ?? 是一个特殊变量,用来获取上一个命令的退出状态,或者上一个函数的返回值
例子1

#!/bin/bash

function func1(){
  count=0
  for cont in {1..3}; do
    count=`expr $count + 1`
  done
  # 函数中使用return返回时,返回值的数据类型必须是数字
  return $count
}

# 在$()的圆括号中可以执行linux命令,当然也包括执行函数
res1=$(func1)

# 变量res2将会接收函数的返回值,这里是3
res2=`echo $?`

if [[ $res2 == 3 ]]; then
  echo "func1() succeeded!"
else
  echo "Not a right number!"
fi

输出结果:

func1() succeeded!

例子2

#!/bin/bash

function func2 {
	local  temp=2
	return $temp
}

echo   "func2 return  value  is  :$?"

输出结果:
func2 return value is : 2

3、全局变量

val=10
function func1 {
    echo "hello"
    ((val++))
}

func1
echo $val

输出结果:

hello
11

参考

$0:Shell 的命令本身
$1 到 $9:表示 Shell 的第几个参数
$? :显示最后命令的执行情况,或者函数
$#:传递到脚本的参数个数
$$:脚本运行的当前进程 ID 号
$*:以一个单字符串显示所有向脚本传递的参数
$!:后台运行的最后一个进程的 ID 号
$-:显示 Shell 使用的当前选项

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

绛洞花主敏明

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

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

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

打赏作者

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

抵扣说明:

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

余额充值