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 使用的当前选项

发布了84 篇原创文章 · 获赞 29 · 访问量 4万+

猜你喜欢

转载自blog.csdn.net/qq_39852676/article/details/104718886