关于 Shell中函数的返回值 问题

# !/bin/sh

sum()

{

echo $(($1+$2))

return $(($1-$2))

}

sum $1 $2

c=$(sum $1 $2)

echo $?

echo $c

执行命令:./bashTest 11 1

运行结果是:

12 —— sum $1 $2的结果

10 —— echo $?的结果,因为return的值为10

12 ——  echo $c的结果,值为12,所以c并不会被附上return的值,echo $c时调用了sum函数,所以打印了12

我们对shell中的返回值的理解有偏差,shell中的返回值一般指命令执行后的返回值,一般是命令执行成功返回0,执行失败返回1,命令执行后,可以用echo $?查看返回值是多少,在本例子中,因为函数有return语句,则说明函数自己定义了一个返回值,可以通过echo
$?查看这个返回值,c=$(sum $1 $2)的值并不等于return的值,说明shell中并没有像我们在C中定义函数时,如同c=abs(i,j)那样的返回值调用。

有人说了这样的话:

基本明白了,那意思是说shell里的函数没有像其他语言一样将函数的返回值赋予给某个变量吗?

c=sum_test $1 $2

echo $c

昵称: hxl  时间: 2010-06-09 10:34:00

回复 hxl

没有。。。。

昵称: lkk2003rty  时间: 2010-06-09 11:27:00

################ 以上来自http://blog.163.com/[email protected]/blog/static/44780245201062865644141/##################

正确方法:

function plus () {

read -p "input number1:" number1

read -p "input number2:"  number2

#echo $(($number1+$number2)) #两组括号的意思是做算术运算

echo `expr $number1 + $number2`

}

res=$(plus)

echo "plus result is $res"

使用echo , 用 res=$(plus) 调用和获取

时间: 2024-10-15 18:27:11

关于 Shell中函数的返回值 问题的相关文章

一篇博客分清shell中的状态返回值-return-break-continue-exit

一篇博客分清shell中的状态返回值-return-break-continue-exit 一.break.continue.exit.return的区别和对比 条件与循环控制及程序返回值命令知识表 命令 说明 break n 如果省略n,则表示跳出整个循环,n表示跳出循环的层数 continue n 如果省略n,则表示跳出本次循环,忽略本次循环剩余代码,进入循环的下一次循环.n表示退到第n层继续循环 exit n 表示退出当前shell程序,n为上一次程序执行的状态返回值,n也可以省略,在下一

shell获取函数的返回值

背景:定义了一个函数,比对本地和线上服务器集群数量差别,想要获取不同集群的个数.shell和其他语言的函数返回值还是差别挺大的. 定义一个函数 functionname(){ 操作内容 echo 输出内容 return 返回值 #返回值可有可不有 } 获得函数的返回值 1.函数默认是将标准输出传递出来,不是返回值. 所以如果直接调用functionname,实际上是将输出传递回来 例如: a=`functionname` 将函数functionname的标准输出传递给a 2.调用函数不需要加()

ctypes获取扩展模块中函数的返回值

ctypes获取返回值 我们前面已经看到了,通过ctypes像扩展模块中的函数传参时是没有问题的,但是我们如何拿到返回值呢?我们之前都是使用printf直接打印的,但是这样显然不行,我们肯定是要拿到返回值去做一些别的事情的.那么我们看看如何使用ctypes获取函数的返回值. 获取整型返回值 int test1(int a, int b) { int c; c = a + b; return c; } void test2() { } 我们定义了两个函数,下面编译成dll文件,dll文件名叫做mm

Shell中处理方法返回值问题

同步发表:http://blog.hacktons.cn/2017/12/13/shell-func-return/ 背景 通过shell编程,写一些工具批处理的时候,经常需要自定义函数.更复杂点的情况下,可能有需要返回一个值. 由于在shell的世界中,并不像其他编程语言,它不支持我们所熟悉的方法返回.本文一起总结一下如何优雅的解决返回值问题? 测试程序 我们一般通过$?来获取上一个语句的输出.看一下下面得测试语句: 新建testReturn脚本 returnString(){ return

关于JS中函数的返回值的一点死思考

在Javascript中,函数总是会有一个返回值.即使我们没有显示的使用 "return",程序也会隐式的返回一个 "undefined". 通过下面的小demo即可理解. demo1 function fn(){ return 1; } fn(); 运行结果:1 demo2 function fn(){ console.log(1); } fn(); 运行结果:1 undefined

js 中 函数的返回值问题

var result=''; function searchByStationName( address ) { // map.clearOverlays();//清空原来的标注 var keyword = address ; localSearch.setSearchCompleteCallback(function (searchResult) { var poi = searchResult.getPoi(0); result = poi.point.lng + "," + po

Swift2.0语言教程之函数的返回值与函数类型

Swift2.0语言教程之函数的返回值与函数类型 Swift2.0中函数的返回值 根据是否具有返回值,函数可以分为无返回值函数和有返回值函数.以下将会对这两种函数类型进行讲解. Swift2.0中具有一个返回值的函数 开发者希望在函数中返回某一数据类型的值,必须要在函数声明定义时为函数设定一个返回的数据类型,并使用return语句进行返回.其中,return语句的一般表示形式如下: return 表达式 其中,表达式可以是符合Swift标准的任意表达式.而具有返回值的函数声明定义形式如下: fu

shell中函数返回值

1.前言 快半年没有写博客了,荒废了很久,工作中的杂事太多,自己越来越懒了.为了鞭策自己成长,还是要坚持写写博客,记录自己的成长. 2.shell函数介绍 语法: [ function ] funname [()] { action; [return int;] } 说明: (1)可以带function fun()  定义,也可以直接fun() 定义,不带任何参数. (2)参数返回,可以显示加:return 返回,如果不加,将以最后一条命令运行结果,作为返回值. return后跟数值n(0-25

自定义函数中的参数返回值 “-> (Int -> Int)”的问题

func makeIncrementer() -> (Int -> Int) { func addOne(number: Int) -> Int { return 1 + number } return addOne } var increment = makeIncrementer() println(increment(7)) 这里为什么要写两个 Int->Int 这里是返回值是参数,左边是参数,右边是返回值的意思. 自定义函数中的参数返回值 "-> (Int