当前位置: 首页 > news >正文

shell脚本编程(函数)

目录

一.基础了解

1.1定义

1.2要求以及作用

二.定义函数

三.调用函数

四.传递参数

五.返回值


一.基础了解

1.1定义

函数是完成特定功能的代码片段,在Shell脚本中,函数是一组命令的集合,可以通过一个名称来调用。函数可以帮助你组织代码,使其更易于阅读和维护。

1.2要求以及作用

函数必须先定义才能使用,函数的主要优点是避免重复的代码,提升作业效率
 

二.定义函数

在Shell脚本中,函数的定义通常遵循以下格式:

function_name() {# 函数体command1command2...
}

或者更简洁的格式:

function_name() { command1; command2; ... }

举例:

函数必须提前定义测试
[root@localhost]# cat fun05.sh 
#!/bin/bash
fun () {
echo "hello"
}
fun
unset fun
fun
[root@localhost]# bash fun05.sh
hello
fun05.sh: line 8: fun: command not found

三.调用函数

调用函数非常简单,只需使用函数名即可:

function_name

四.传递参数

函数可以接受参数,这些参数在函数内部可以通过 $1$2$3, ... 来访问,分别代表第一个参数、第二个参数等。

function_name() {echo "第一个参数: $1"echo "第二个参数: $2"
}# 调用函数并传递参数
function_name "参数1" "参数2"

具体示例:

[root@localhost]# cat fun06.sh 
#!/bin/bash
fun() {echo $[$1*$2*$3]
}
fun 1 2 3

五.返回值

在Shell脚本中,函数可以通过 return 语句返回一个整数状态码(0表示成功,非0表示失败)。如果需要返回其他类型的数据,可以通过修改全局变量或使用命令替换来实现。函数的返回值,返回的是函数体内最后一条命令是否成功的返回值。

function_name() {return 42
}# 调用函数并获取返回值
function_name
echo "返回值: $?"

示例:

以下是一个简单的Shell脚本示例,展示了函数的定义、调用、参数传递和返回值:

#!/bin/bash# 定义函数
greet() {echo "你好, $1!"return 0
}# 调用函数并传递参数
greet "世界"# 获取返回值
if [ $? -eq 0 ]; thenecho "函数执行成功"
elseecho "函数执行失败"
fi

相关文章:

  • 北京网站建设多少钱?
  • 辽宁网页制作哪家好_网站建设
  • 高端品牌网站建设_汉中网站制作
  • 网络编程--python
  • Vue3 中的响应式系统:深入理解 Proxy API
  • 第四十篇-TeslaP40+Ollama+Ollama-WebUI(自编译)
  • flume 使用 exec 采集容器日志,转储磁盘
  • 游戏翻译中西班牙语的特点
  • PHP一站式班级解决方案班级管家系统小程序源码
  • 【主机入侵检测】Wazuh解码器之JSON解码器
  • 智能计算方法与实现2|模拟退火算法原理|工具箱及其应用
  • 斯洛文尼亚秋季徒步旅游 | 领略最美秋色!
  • 随身WiFi实测,真相让你大跌眼镜!随身携带的随身wifi哪个比较好?什么品牌的随身wifi好用?
  • 高级编程--第四章 输入和输出处理
  • PhpStorm 中配置调试功能的详尽指南
  • pyenv -- 一款macos下开源的多版本python环境安装管理工具 国内加速版安装 + 项目venv虚拟环境 pip加速 使用与总结
  • React学习-hooks
  • 【多线程】概述
  • [PHP内核探索]PHP中的哈希表
  • 「前端」从UglifyJSPlugin强制开启css压缩探究webpack插件运行机制
  • 【Leetcode】104. 二叉树的最大深度
  • canvas 高仿 Apple Watch 表盘
  • el-input获取焦点 input输入框为空时高亮 el-input值非法时
  • Java 实战开发之spring、logback配置及chrome开发神器(六)
  • Java知识点总结(JDBC-连接步骤及CRUD)
  • jQuery(一)
  • js 实现textarea输入字数提示
  • JSDuck 与 AngularJS 融合技巧
  • LeetCode541. Reverse String II -- 按步长反转字符串
  • Mysql5.6主从复制
  • PaddlePaddle-GitHub的正确打开姿势
  • Python socket服务器端、客户端传送信息
  • Rancher-k8s加速安装文档
  • RedisSerializer之JdkSerializationRedisSerializer分析
  • 阿里云Kubernetes容器服务上体验Knative
  • 百度小程序遇到的问题
  • 半理解系列--Promise的进化史
  • 飞驰在Mesos的涡轮引擎上
  • 缓存与缓冲
  • 极限编程 (Extreme Programming) - 发布计划 (Release Planning)
  • 解决jsp引用其他项目时出现的 cannot be resolved to a type错误
  • 聊一聊前端的监控
  • 悄悄地说一个bug
  • 小程序、APP Store 需要的 SSL 证书是个什么东西?
  • 一个SAP顾问在美国的这些年
  • 云大使推广中的常见热门问题
  • 专访Pony.ai 楼天城:自动驾驶已经走过了“从0到1”,“规模”是行业的分水岭| 自动驾驶这十年 ...
  • ​批处理文件中的errorlevel用法
  • # 睡眠3秒_床上这样睡觉的人,睡眠质量多半不好
  • ### Cause: com.mysql.jdbc.exceptions.jdbc4.MySQLTr
  • #C++ 智能指针 std::unique_ptr 、std::shared_ptr 和 std::weak_ptr
  • #我与Java虚拟机的故事#连载14:挑战高薪面试必看
  • ()、[]、{}、(())、[[]]等各种括号的使用
  • (27)4.8 习题课
  • (day6) 319. 灯泡开关
  • (vue)el-cascader级联选择器按勾选的顺序传值,摆脱层级约束
  • (二)延时任务篇——通过redis的key监听,实现延迟任务实战
  • (附源码)ssm高校运动会管理系统 毕业设计 020419