代码编织梦想

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

版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。 本文链接: https://blog.csdn.net/qq_39852676/article/details/104718886

Shell—— 7.数学运算-爱代码爱编程

使用let、(())、 ( ( ) ) 或

强大的Linux磁盘分区管理工具parted-爱代码爱编程

文章目录 parted磁盘分区的介绍parted与fdisk的区别parted常见操作命令表parted的GTP分区的具体操作通过shell脚本实现分区管理 parted磁盘分区的介绍 parted 是一个操作硬盘分区的程序。它支持多种分区表类型,包括 MS-DOS 和 GPT。parted允许用户创建、删除、调整、缩减、移动和复制分区,以及

Shell—— 6.expr-爱代码爱编程

1. info expr ‘expr’支持模式匹配和字符串操作。字符串表达式的优先级高于数值表达式和逻辑关系表达式。 ‘STRING : REGEX’ 执行模式匹配。两端参数会转换为字符格式,且第二个参数被视为正则表达式(GNU基本正则),它默认会隐含前缀"^"。随后将第一个参数和正则模式做匹配。 如果匹配成功,且REGEX使用了’(‘和’)’,则此表达

linux shell 正则表达式-爱代码爱编程

1. 基本语法 1.1 字符类 字符含义举例.匹配任意一个字符abc.可以匹配 abcd、 abc9 等[]匹配括号中的任意一个字符[abc]d 可以匹配 ad、 bd 或 cd-在[]括号内表示字符范围[0-9a-fA-F]可以匹配一位十六进制数字^位于[]括号内的开头,匹配除括号中的字符之外的任意一个字符[^xy]匹配除 xy 之外的任一字符,因此

Shell—— 8.bc命令-爱代码爱编程

bc可用于浮点数的计算,是linux中的计算器。该命令功能丰富、强大的让人吐血,支持自定义变量、自定义函数表达式逻辑、支持科学计算。 1.官方文档 [root@node1 ~]# bc --help usage: bc [options] [file …] -h --help print this usage and exit -i --interac

关于awk 中如何使用 if条件判断句-爱代码爱编程

文章目录   这个是我自己写的 全部关于 awk学习的目录导航 ,感兴趣的可以看看。            首先,大家都知道 if 条件判断句 吧,这个就算不知道 也很好理解吧:无非就是条件成立则执行对应的代码、条件不成立则不执行!        在 awk 中,我们也是可以搭配 if条件判断句 来使用:千万要注意格式!!!!非常重要!