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 的第⼏个参数
$? :显⽰最后命令的执⾏情况,或者函数$#:传递到脚本的参数个数shell脚本返回执行结果
$$:脚本运⾏的当前进程 ID 号
$*:以⼀个单字符串显⽰所有向脚本传递的参数$!:后台运⾏的最后⼀个进程的 ID 号
$-:显⽰ Shell 使⽤的当前选项
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。
发表评论