好好爱自己!

shell自定义函数

参考: http://www.cnblogs.com/zhaiqianfeng/p/4621297.html

“sum=$(fsum 2 5)”这种方式,是将标准输出(echo 出来的东子)传递给主程序的变量而不是返回值

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
#!/bin/bash
function sum(){
 
 val1=$1
 
 val2=$2
 
 val3=$(($1+$2))
 
 echo $val3
 
}
 
#Call function with 2 parameters and it return 1 parameter.
ret_val=$(sum 10 20)
echo $ret_val

  脚本执行结果: ret_val = $(sum 10 20)  将sum 10 20 的输出传递给变量ret_val

1
2
3
4
5
6
7
8
9
10
11
12
#!/bin/bash
prod=1
twoPow(){
        for((i=0;i<$1;i++));
        do
                prod=$(($prod*2))
        done
}
echo "Enter a number"
read num
twoPow $num
echo $prod

  执行脚本 c.sh

 

 

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
#!/bin/bash
 
twoPow()
{
    prod=1
    for((i=0;i<$1;i++));
    do
        prod=$(($prod*2))
    done
    return $prod
}
 
echo "Enter a number"
read num
twoPow num

  

 

----------------------------------------------------------------------------------------------------------------------------------

Shell的函数在使用之前必须先定义,定义格式:

1
2
3
4
5
[ function ] funname [()]
{
    action;
    [return int;]
}
  • 可以带function fun()定义,也可以直接fun() 定义,不带任何参数。
  • 参数返回,可以显示加:return 返回,如果不加,将以最后一条命令运行结果,作为返回值。 return后跟数值n(0-255)

示例

1
2
3
4
5
6
7
8
9
10
fsum 2 5
 
fsum(){
    echo $1,$2
    return $1+$2
}
 
sum=$(fsum 2 5)
echo $?
echo "sum=$sum"

执行输出:

fsum: not found
7
sum=2,5

从上面这个例子我们可以得到几点结论:

  • 必须在调用函数地方之前,声明函数,shell脚本是逐行运行,这点和编译型语言不通。
  • 函数返回值,只能通过$? 系统变量获得,而“sum=$(fsum 2 5)”这种方式,是将标准输出传递给主程序的变量,而不是返回值!

Shell函数可以在脚本文件中使用之前定义它,也可以把函数定义在一个独立的文件使用点号(.)命令来引用它。如function.sh和testshell.sh在同一目录中,function.sh

1
2
3
4
fsum(){
    echo $1,$2
    return $(($1+$2))
}

testshell.sh

1
2
3
#! /bin/sh
. ./function.sh
fsum 2 5

 

posted @   立志做一个好的程序员  阅读(21604)  评论(0编辑  收藏  举报
编辑推荐:
· AI与.NET技术实操系列:基于图像分类模型对图像进行分类
· go语言实现终端里的倒计时
· 如何编写易于单元测试的代码
· 10年+ .NET Coder 心语,封装的思维:从隐藏、稳定开始理解其本质意义
· .NET Core 中如何实现缓存的预热?
阅读排行:
· 分享一个免费、快速、无限量使用的满血 DeepSeek R1 模型,支持深度思考和联网搜索!
· 基于 Docker 搭建 FRP 内网穿透开源项目(很简单哒)
· 25岁的心里话
· ollama系列01:轻松3步本地部署deepseek,普通电脑可用
· 按钮权限的设计及实现

不断学习创作,与自己快乐相处

点击右上角即可分享
微信分享提示