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

Shell函数

目录

1.Shell的作用

2.Shell函数定义

3.函数变量的作用范围

Source

4.递归

 5.函数库

​编辑​编辑​编辑


1.Shell的作用

使用函数可以避免代码重复

使用函数可以将大的工程分割为若干小的功能模块,代码的可读性更强

2.Shell函数定义

1)

function 函数名 {

              命令序列

}

2)

函数名() {

          命令序列

}

函数返回值:

return表示退出函数并返回一个退出值,脚本中可以用$?变量显示该值

使用原则

1、函数一结束就取返回值,因为$?变量只返回执行的最后一条命令的退出状态码

2、退出状态码必须是0~255,超出时值将除以256取余

function  zxr  {

         read  -p   "请输入:"   value

         return  $[$value * 2]

}

zxr

echo $?

zxr() {

read  -p "请输入:" value

            echo  $zxr

}

zxr $1 $2

函数以外的$1、$2是脚本的位置参数

函数以内的$1、$2代表的是调用函数时,函数后面跟的位置参数

———————————————————————————————————————————

———————————————————————————————————————————

 注:export name=zhangsan  全局有效,切换shell也是有效的

 通常一个shell函数脚本执行的顺序是先执行函数,在执行脚本内容

———————————————————————————————————————————

3.函数变量的作用范围

函数在Shell脚本中仅在当前shell环境中有效

shell脚本中变量默认全局有效

将变量限定在函数内部使用local命令

 local name 把name锁死在函数内部,出了函数就用不了了

Source

source 执行脚本会把改变环境变量,会把外边的变量带进来执行

 其他执行就不会改变参数,只会在当前环境执行

4.递归

函数调用自己本身的函数

阶乘

例题1

使用函数递归目录/var/log,如果是文件直接输出文件名,如果是目录则输出目录名且输出此目录下的所有目录和文件名

 

例题2

通过脚本输出环境变量PATH所包含的所有目录以及其中的子目录和和所有不可执行文件

 

 5.函数库

把函数编入一个文件中,在第二个文件中执行前一个文件,设置需求并输出

 

 

http://www.lryc.cn/news/66418.html

相关文章:

  • Spring-IOC源码解析
  • 不会做大数据实时计算?10年数据分析师整理,一文给出解决方案
  • 如何让你的 WebSocket 接口测试更高效?拯救你的接口测试工作
  • 浅谈Linux 文件系统层次结构的组织方式
  • 创新案例 |探索 Tive 80% 的收入增长得益于智能物流服务、跟踪和实时可视化
  • makefile和cmake
  • 通过OpenCL内核代码猜测设备寄存器个数
  • C# + .Net6 实现TensorFlow图片分类
  • Ngnix负载均衡和高可用集群及搭建与相关理论
  • 2022年宜昌市网络搭建与应用竞赛样题(三)
  • 为什么PCB设计完成后需要放置mark点
  • 代理IP:IP代理技术与Socks5协议
  • 如何让java程序员生涯更顺利?我聊聊提升技术水平的五个方面
  • 快速排序、希尔排序、归并排序、堆排序、插入排序、冒泡排序、选择排序(递归、非递归)C语言详解
  • ChatGPT一键私有部署,全网可用,让访问、问答不再受限,且安全稳定!
  • 自学黑客(网络安全),一般人我劝你还是算了吧
  • 盘“底座”,盘出新生意经
  • 《花雕学AI》Poe:一个让你和 AI 成为朋友的平台,带你探索 ChatGPT4 和其他 八种AI 模型的奥秘
  • 单片机GD32F303RCT6 (Macos环境)开发 (十五)—— i2c1采用DMA方式的读写函数
  • 通知短信 API 技术细节以及发送流程机制原理解析
  • Protobuf: 高效数据传输的秘密武器
  • 第五十四章 Unity 移动平台输入(下)
  • KD305Y带吸收比极化指数兆欧表
  • 磁盘空间不足怎么办?释放磁盘空间的4种方法
  • ChatGPT调教指北,技巧就是效率!
  • Android启动流程(五)——init进程对子进程的监控
  • Python每日一练:蚂蚁家族(详解集合法)
  • 图神经网络:在KarateClub数据集上动手实现图神经网络
  • ArduPilot之开源代码调试技巧
  • Linux网络基础-2