linux shell函数和返回值

shell函数可以有返回值,但是只能返回0-255作为状态值,不能返回字符串,字符串可以通过其他方式传递给调用者

1.shell函数的return

小于255的值

~/Desktop$ cat b.sh
getLastSize() {
size=2
return $size
}getLastSize
lastSize=$?
echo "last size: $lastSize"~/Desktop$ ./b.sh
last size: 2

大于255的值

~/Desktop$ cat b.sh
getLastSize() {
size=256
return $size
}getLastSize
lastSize=$?
echo "last size: $lastSize"~/Desktop$ ./b.sh
last size: 0

基本是对256取余的返回值

~/Desktop$ cat b.sh
getLastSize() {
size=513
return $size
}getLastSize
lastSize=$?
echo "last size: $lastSize"~/Desktop$ ./b.sh
last size: 1

2.返回字符串

通过$(函数调用和参数),通过$()调用,函数中的echo不会打印到控制台,直接调用函数,则会调用控制台

~/Desktop$ cat b.sh
getLastSize() {
size=513
echo $size
}lastSize=$(getLastSize)
echo "last size: $lastSize"~/Desktop$ ./b.sh
last size: 513

返回非纯数字的字符串

~/Desktop$ cat b.sh
getLastSize() {
size='aaa513'
echo $size
}lastSize=$(getLastSize)
echo "last size: $lastSize"~/Desktop$ ./b.sh
last size: aaa513

多行echo

~/Desktop$ cat b.sh
getLastSize() {
echo 'hello world'
size='aaa513'
echo $size
}lastSize=$(getLastSize)
echo "last size: $lastSize"~/Desktop$ ./b.sh
last size: hello world
aaa513

多行echo只获取最后一个输出

############################################
~/Desktop$ cat b.sh
getLastSize() {
echo 'hello world'
size='aaa513'
echo $size
}lastSize=$(getLastSize | tail -1)
echo "last size: $lastSize"~/Desktop$ ./b.sh
last size: aaa513#############################################
~/Desktop$ cat b.sh
getLastSize() {
echo 'hello world'
size='aaa513'
echo $size
}lastSize=`getLastSize | tail -1`
echo "last size: $lastSize"~/Desktop$ ./b.sh
last size: aaa513

3.函数参数

~/Desktop$ cat b.sh
function printArg(){echo '$*='$*echo '$@='$@echo '$#='$#echo '$0='$0echo "\$1=$1"echo '$2='$2echo '$$='$$echo $2+$3
}printArg 'a' 'b' 'c' 1 2 3echo 'printArg done'ret=$(printArg 1 3 'a' 'b' 5 | tail -1)
echo 'printArg done'
echo "ret=$ret"~/Desktop$ ./b.sh
$*=a b c 1 2 3
$@=a b c 1 2 3
$#=6
$0=./b.sh
$1=a
$2=b
$$=663215
b+c
printArg done
printArg done
ret=3+a

参数说明

   $0;# 获取执行命令:./b.sh
   $*;# 获取所有参数列表
   $@;# 获取所有参数列表
   $#;# 获取参数列表个数
   $1;# 获取第一个参数
   $2;# 获取第二个参数
   $$;# 获取进程id

 4.流程控制

for循环

~/Desktop$ cat b.sh
function testfor(){for (( x=1; x<$1; x++)); doecho get number: $xdone
}testfor 5~/Desktop$ ./b.sh
get number: 1
get number: 2
get number: 3
get number: 4

switch case;在sell中是case in

~/Desktop$ cat b.sh
function getDaysInYearMonth(){days=0;year=$1;month=$2;case $month in4 | 6 | 9 | 11)days=30;;2)if [ $((year%4)) -eq 0 -a $((year%100)) -ne 0 -o $((year%400)) -eq 0 ];thendays=29;elsedays=28;fi;;*)days=31;;esac;return $days;
}getDaysInYearMonth 2020 2
days=$?
echo 2020/02 has day:$daysgetDaysInYearMonth 2022 3
days=$?
echo 2022/03 has day:$days~/Desktop$ ./b.sh
2020/02 has day:29
2022/03 has day:31

规则

# case val in
#     match1)
#        dosomething
#        doother;;
#    match2 | match2)
#        dosomething;;
#    *) #match all
#        dosomething;;
# esac;
#
#

 注意:

函数return的是状态码,不是数值

函数可以通过echo让调用者调用$()获取

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/62585.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

提升系统管理:监控和可观察性在DevOps中的作用

在不断发展的DevOps世界中&#xff0c;深入了解系统行为、诊断问题和提高整体性能的能力是首要任务之一。监控和可观察性是促进这一过程的两个关键概念&#xff0c;为系统的健康和性能提供了宝贵的可见性。虽然这些术语经常可以互换使用&#xff0c;但它们代表着理解和管理复杂…

一篇文章带你了解-selenium工作原理详解

前言 Selenium是一个用于Web应用程序自动化测试工具。Selenium测试直接运行在浏览器中&#xff0c;就像真正的用户在操作一样。支持的浏览器包括IE&#xff08;7, 8, 9, 10, 11&#xff09;&#xff0c;Mozilla Firefox&#xff0c;Safari&#xff0c;Google Chrome&#xff0c…

RK3562 VS RK3566 性能解析

RK3562是深圳触觉智能最新推出的一款高性能核心板及其开发套件&#xff0c;采用四核A53Mali G52架构&#xff0c;主频2GHz&#xff0c;内置1T NPU算力以及13M ISP&#xff0c;拥有丰富的外围接口。其次在解码方面&#xff0c;支持H.264 1080P60fps、H.265 4K30fps&#xff1b;编…

EMQX启用双向SSL/TLS安全连接以及java连接

作为基于现代密码学公钥算法的安全协议&#xff0c;TLS/SSL 能在计算机通讯网络上保证传输安全&#xff0c;EMQX 内置对 TLS/SSL 的支持&#xff0c;包括支持单/双向认证、X.509 证书、负载均衡 SSL 等多种安全认证。你可以为 EMQX 支持的所有协议启用 SSL/TLS&#xff0c;也可…

cocos 2.4 版本 设置物理引擎步长 解决帧数不一致的设备 物理表现不一致问题 设置帧刷新率

官网地址Cocos Creator 3.8 手册 - 2D 物理系统 官网好像写的不太对 下面是我自己运行好使的 PhysicsManager.openPhysicsSystem()var manager cc.director.getPhysicsManager();// 开启物理步长的设置manager.enabledAccumulator true;// cc.PhysicsManagercc.PhysicsManag…

Leetcode109. 有序链表转换二叉搜索树

力扣&#xff08;LeetCode&#xff09;官网 - 全球极客挚爱的技术成长平台 给定一个单链表的头节点 head &#xff0c;其中的元素 按升序排序 &#xff0c;将其转换为高度平衡的二叉搜索树。 本题中&#xff0c;一个高度平衡二叉树是指一个二叉树每个节点 的左右两个子树的高度…

python+django+协同过滤算法-基于爬虫的个性化书籍推荐系统(包含报告+源码+开题)

为了提高个性化书籍推荐信息管理的效率&#xff1b;充分利用现有资源&#xff1b;减少不必要的人力、物力和财政支出来实现管理人员更充分掌握个性化书籍推荐信息的管理&#xff1b;开发设计专用系统--基于爬虫的个性化书籍推荐系统来进行管理个性化书籍推荐信息&#xff0c;以…

达观RPA实战示例-JSON数据解析

一、应用背景 日常开发中有很多地方需要对JSON数据进行解析。本文主要讲解通过达观RPA的自定义脚本、可视化控件等方式来解析JSON数据。 二、数据准备与知识 (一)数据准备 本文使用到的JSON数据如下,它可以使存放在文本文件中的字符串,也可以是通过http请求获取的文本。…

Go Map

学习了GO语言中数组&#xff0c;切片类型&#xff0c;但是我们发现使用数组或者是切片存储的数据量如果比较大&#xff0c;那么通过下标来取出某个具体的数据的时候相对来说&#xff0c;比较麻烦。例如&#xff1a; names : []string{"张三","李四","…

leetcode做题笔记120. 三角形最小路径和

给定一个三角形 triangle &#xff0c;找出自顶向下的最小路径和。 每一步只能移动到下一行中相邻的结点上。相邻的结点 在这里指的是 下标 与 上一层结点下标 相同或者等于 上一层结点下标 1 的两个结点。也就是说&#xff0c;如果正位于当前行的下标 i &#xff0c;那么下一…

【JavaScript】版本判断

用于客户端和服务端进行版本更新判断使用&#xff0c;如有BUG&#xff0c;还望指出 效果 console.log(isAllowUpdate(1,2.0.0), // trueisAllowUpdate(2.0,2.0.0), // falseisAllowUpdate(2.0,2.0.1), // trueisAllowUpdate(2.1.1,2.1.2), // trueisAllowUpdate(2.1.3,2.1.2),…

Spring Boot集成MyBatis Plus

文章目录 一、前言二、步骤2.1、步骤 1&#xff1a;创建 Spring Boot 项目2.2、添加依赖2.2.1、基本的Spring和Spring MVC功能2.2.2、MySQL驱动依赖2.2.3、 MyBatis Plus 的依赖 2.3、配置数据库连接2.4、创建实体类2.5、创建 Mapper 接口2.6、编写 Service 层2.7、编写 Contro…

前端vue3+ts架构

1、vue creat 项目名称 选择自定义 选择需要的依赖 选择vue3 一路enter&#xff0c;选择eslistprettier 继续enter&#xff0c;等待安装 按步骤操作&#xff0c;项目启动成功 2、vscode安装5款插件 2、代码保存自动格式化&#xff0c;保证每个开发人员代码一致&#xff0c;根目…

数据结构体--5.0图

目录 一、定义 二、图的顶点与边之间的关系 三、图的顶点与边之间的关系 四、连通图 五、连通图的生成树定义 一、定义 图&#xff08;Graph&#xff09;是由顶点的又穷非空集合合顶点之间边的集合组成&#xff0c;通常表示为&#xff1a;G&#xff08;V&#xff0c;E&…

CSC7203S 应用注意事项

CSC7203S 为高性能电流模式 PWM 开关电源功率转换器&#xff0c;满足绿色环保标准&#xff1b;广泛适用于经济型开关电源&#xff0c;如 DVD、机顶盒、传真机、打印机、LCD 显示器等。CSC7203S采用SOP-8封装。  内置 700V 高压功率开关管  输入电压&#xff08;85V~265V&a…

微服务--Ribbon(负载均衡:客户端的负载均衡):服务端:nginx

默认&#xff08;根据&#xff1a;符合判断server所在区域的性能和server的可用性划分选择服务器&#xff09;轮询 官方提供负载均衡&#xff1a;RestTemplate整合loadBalancer

TDengine函数大全-数学函数

以下内容来自 TDengine 官方文档 及 GitHub 内容 。 以下所有示例基于 TDengine 3.1.0.3 TDengine函数大全 1.数学函数 2.字符串函数 3.转换函数 4.时间和日期函数 5.聚合函数 6.选择函数 7.时序数据库特有函数 8.系统函数 数学函数 TDengine函数大全ABSACOSASINATANCEILCOSFL…

Gitlab创建一个空项目

1. 创建项目 Project slug是访问地址的后缀&#xff0c;跟前边的ProjectUrl拼在一起&#xff0c;就是此项目的首页地址&#xff1b; Visibility Level选择默认私有即可&#xff0c;选择内部或者公开&#xff0c;就会暴露代码。 勾选Readme选项&#xff0c;这样项目内默认会带…

flink维度表关联

分析&回答 根据我们业务对维表数据关联的时效性要求&#xff0c;有以下几种解决方案&#xff1a; 1、实时查询维表 实时查询维表是指用户在Flink 的Map算子中直接访问外部数据库&#xff0c;比如用 MySQL 来进行关联&#xff0c;这种方式是同步方式&#xff0c;数据保证是…

大数据课程K15——Spark的TF-IDF计算Term权重

文章作者邮箱:yugongshiye@sina.cn 地址:广东惠州 ▲ 本章节目的 ⚪ 了解Spark的TF-IDF算法概念; ⚪ 了解Spark的TF-IDF算法定义; ⚪ 了解Spark的TF-IDF算法案例; 一、TF-IDF算法概述 TF-IDF(term frequency–inverse document frequency)是一种用于信…