[shell]shell函数
函数可以让我们将一个复杂功能划分成若干模块,让程序结构更加清晰,代码重复利用率更高。像其他编程语言一样,Shell 也支持函数。Shell 函数必须先定义后使用。Shell 函数的定义格式如下:
[function] fun() {list of commands[ return value ]
}
说明:
- 可以带function fun() 定义,也可以直接fun() 定义,不带任何参数,function关键字和()必须有其中一个。
- 返回值,可以显示加:return 返回,如果不加,将以最后一条命令运行结果,作为返回值。 return后跟数值n(0-255)。
- 参数,()内是没有参数的,它并不像C语言那样,在()里可以有参数。那大家可能就郁闷了,函数调用或多或少总是会需要一些参数,那么这些参数要怎么传递进来呢?其实参数传递方式为:fname;(不需要传递参数)或fname agr1 arg2(需要传递两个参数);
Shell 函数返回值只能是整数,一般用来表示函数执行成功与否,0表示成功,其他值表示失败。如果 return 其他数据,比如一个字符串,往往会得到错误提示:“numeric argument required”。如果一定要让函数返回字符串,那么可以先定义一个变量,用来接收函数的计算结果,脚本在需要的时候访问这个变量来获得函数返回值。shell函数返回值有三种方式:
- 直接return通过$?来接收返回值;
- 定义全局变量,通过全局变量来接收的方式,使用函数返回值。
- echo的方式,通过标准输出来返回。
#!/bin/bashfunction sum()
{if [ $# != 2 ]thenecho "arg num != 2"return 0fireturn $(( $1 + $2 ))
}
sum 5 6 #调用函数只需要给出函数名,不需要加括号。
echo "5+6=$?" #-->5+6=11; 函数返回值在调用该函数后通过 $? 来获得。
sum 100 200
echo "100+200=$?" #-->100+200=44,return后跟数值n(0-255)。300-256=44#向函数传递数组
a=(1 2 3 4)
sum(){local sum=0;for v in $@dosum=$[sum+v] #sum=$(($sum+$v));doneecho $sum; #-->10
}
sum ${a[@]}#像删除变量一样,删除函数也可以使用 unset 命令,不过要加上 .f 选项,
#$unset -f function_name
#如果你希望直接从终端调用函数,可以将函数定义在主目录下的 .profile 文件,这样每次登录后,在命令提示符后面输入函数名字就可以立即调用。
- $0:是脚本本身的名字;
- $#:是传给脚本的参数个数;
- $@:是传给脚本的所有参数的列表,即被扩展为"$1" "$2" "$3"等;
- $*:是以一个单字符串显示所有向脚本传递的参数,与位置变量不同,参数可超过9个,即被扩展成"$1c$2c$3",其中c是IFS的第一个字符;
- $$:是脚本运行的当前进程ID号;
- $?:是显示最后命令的退出状态,0表示没有错误,其他表示有错误;
[shell]shell函数相关推荐
- Linux的shell脚本函数教程
Linux的shell脚本函数教程 一.shell介绍 二.shell函数的介绍 三.函数的定义 四.shell中函数使用示例 一.shell介绍 二.shell函数的介绍 三.函数的定义 四.she ...
- Shell脚本函数(函数传参、递归、创建库)
Shell脚本函数 一.Shell函数 1.Shell函数定义 2.函数的返回值 return echo 二.函数传参 三.函数变量的作用范围 四.递归 1.阶乘 2.递归目录 五.创建库 一.She ...
- linux文件的定义变量的值,linux shell 自定义函数方法(定义、返回值、变量作用域)...
一.定义shell函数(define function) 语法: [ function ] funname [()] { action; [return int;] } 说明: 1.可以带functi ...
- linux shell 自定义函数(定义、返回值、变量作用域)介绍
linux shell 可以用户定义函数,然后在shell脚本中可以随便调用.下面说说它的定义方法,以及调用需要注意那些事项. 一.定义shell函数(define function) 语法: [ f ...
- linux无filelength函数,Linux Shell 自定义函数(定义、返回值、变量作用域)介绍
定义Shell函数(define function) 语法: [ function ] funname [()] { action; [return int;] } 说明: 可以带function f ...
- Shell Curses 函数库
用于 Shell 脚本的终端函数 "Shell Curses"是一个脚本函数库,这些函数为 Shell 程序员提供了将基于文本的光标移动到屏幕上指定位置的能力.这种能力允许使用 S ...
- shell trim函数
shell trim 函数 trim() {local var="$*"# remove leading whitespace charactersvar="${var# ...
- Shell脚本函数应用
记录:429 场景:Shell脚本函数应用,定义函数,函数调用,函数传参. 版本:CentOS Linux release 7.9.2009. 1.普通函数 示例普通函数是没有入参和返回值. 1.1脚 ...
- linux 变量函数返回值,linux shell 自定义函数(定义、返回值、变量作用域)介绍...
linux shell 可以用户定义函数,然后在shell脚本中可以随便调用.下面说说它的定义方法,以及调用需要注意那些事项. 一.定义shell函数(define function) 语法: [ f ...
- shell自定义函数
转载地址:https://www.cnblogs.com/oxspirt/p/7246075.html "sum=$(fsum 2 5)"这种方式,是将标准输出(echo 出来的东 ...
最新文章
- win7系统相关问题故障解决
- 深入理解mysql系列_深入理解MySQL系列之锁
- js能否打印服务器端文档,js打印远程服务器文件
- MATLAB读取文件夹中所有图像
- Oracle 隐含参数的查询
- 上瘾:如何打造习惯养成中的产品(投资篇)
- Java 操作符 小结
- SpringBoot+Maven整合MyBatis时打包漏掉mapper的xml文件【解决resources调用静态资源失败404】
- 原声php 读取excel乱码_php读取excel文件,输出的值乱码解决方法
- matlab遗传算法求解车辆路径问题(一)
- 计算机故障基本维修方法,11种打印机常见故障维修方法
- 2015总结与新年计划
- linux中的码字软件,橙瓜码字神器手机版下载-橙瓜码字神器appv5.2.8-Linux公社
- among us私服搭建
- Unity bug error CS1703: Multiple assemblies with equivalent identity have been imported...
- Linux之NTFS、FAT32、exFAT 各种格式硬盘挂载整理
- windows10 系统中,双屏下,设置各自屏的任务栏显示各自显示器中的任务。
- 3ds Max下载_3ds Max 2023上线了哪些新功能?
- 腾讯企业邮箱OpenApi调用说明
- 游戏开发笔记(一):一元夺宝
热门文章
- 什么情况下我们需要进行硬盘对拷?硬盘对拷怎么操作?
- 小程序setdata优化_微信小程序 setData的使用方法详解
- 网络安全培训笔记 (高清大图)
- 网页端封装生成app移动端,是开发者的热门趋势
- arduino 舵机接线图_arduino+16路舵机驱动板连接测试
- 计算机应聘大学生自我介绍,大学生计算机毕业面试自我介绍
- 【更新中】苹果自家的as汇编器的特色风格(与微软masm汇编器语言风格的不同)
- 计算机科学的刊物卷号,期刊的期号和卷号怎么查询
- 2021ICPC河南省赛 B.Honeycomb
- SwiftUI 跨组件数据传递