shell编程--函数

2023-10-31

函数

定义格式:

(1)
function_name ( )
{
    command1
    ……
    commandn
}
(2)
function function_name ( )
{
    command1
    ……
    commandn
}

注意:所有函数需要在使用前被定义,一般将函数定义放在脚本开始地方

自定义函数

#! /bin/sh

function getSum() {
	SUM=$[$a+$b]
	echo "getSum sum = $SUM"
}

read -p "input a:" a
read -p "input b:" b

getSum $a $b

# 省略function
getSum1() {
	SUM=$[$a+$b]
	echo "getSum1 sum = $SUM"
}

read -p "input a:" a
read -p "input b:" b

getSum1 $a $b

# 省略()
function getSum2 {
	SUM=$[$a+$b]
	echo "getSum2 sum = $SUM"
}

read -p "input a:" a
read -p "input b:" b

getSum2 $a $b

在这里插入图片描述
分文件定义函数
func.sh文件中定义函数

#! /bin/sh

function getSum() {
	SUM=$[$a+$b]
	echo "getSum sum = $SUM"
}

# 省略function
getSum1() {
	SUM=$[$a+$b]
	echo "getSum1 sum = $SUM"
}

# 省略()
function getSum2 {
	SUM=$[$a+$b]
	echo "getSum2 sum = $SUM"
}

sum.sh文件中引用函数

#! bin/sh

# 下面函数定义在func.sh文件这文件中
source func.sh

# 或者使用以下方法 (二选一)
. ./func.sh

read -p "sum input a:" a
read -p "sum input b:" b

getSum $a $b

read -p "sum1 input a:" a
read -p "sum1 input b:" b
getSum1 $a $b

read -p "sum2 input a:" a
read -p "sum2 input b:" b
getSum2 $a $b

系统函数

  • basename
    返回完整路径最后 / 的部分,常用于获取文件名
    basename [pathname] [suffix]
    suffix 为后缀,如果 suffix 被指定了,basename 会将 pathname 中的 suffix 去掉。
#! bin/sh

echo "path is `pwd`/sysfunc.sh"

FILEPATH=`basename /home/sh/sysfunc.sh `
FILENAME=$(basename  /home/sh/sysfunc.sh .sh)

echo "filepath is $FILEPATH"
echo "filename is $FILENAME"

在这里插入图片描述

  • dirname
    返回完整路径最后 / 的前面的部分,常用于返回路径部分
    dirname 文件绝对路径
#! bin/sh

DIR=`dirname /etc/ssh/ssh_config.d`
echo "dir is $DIR"

在这里插入图片描述

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

shell编程--函数 的相关文章

  • 在 Linux 上以编程方式设置 DNS 名称服务器

    我希望能够通过我的 C C 程序为 Linux 上的 DNS 名称服务器添加 IP 地址 我在一个带有只读 etc resolv conf 的嵌入式平台上 这意味着我不能简单地将 nameserver xxx xxx xxx xxx 行添加
  • Django管理命令是在单独的进程中执行的吗?

    Django 有很多管理命令 此外 我们还可以编写自己的命令 进行 shell 调用后会发生什么python manage py XXX 代码是否会在从 shell 启动的进程中执行 或者 shell 进程只是与执行命令的主 Django
  • 如何阻止ubuntu在使用apt安装或更新软件包时弹出“Daemons using outdatedlibraries”? [关闭]

    Closed 这个问题是与编程或软件开发无关 help closed questions 目前不接受答案 我最近新安装了 Ubuntu 22 04 LTS 我发现每次使用 apt 安装或更新软件包时 它都会询问我有关Which servic
  • GIT 和 Ruby:如何从 ruby​​ 脚本内部取消设置 GIT_DIR 变量?

    我编写了一个非常简单的 部署 脚本作为我的post update挂钩到我的裸 git 存储库中 变量如下 live domain mydomain com staging domain stage mydomain com git repo
  • 使用非规范地址检索内存数据会导致 SIGSEGV 而不是 SIGBUS

    我无法使用以下汇编代码产生 总线错误 这里我使用的内存地址不是合法的 规范地址 那么 我怎样才能触发该错误呢 我在带有 NASM 2 14 02 的 Ubuntu 20 04 LTS 下运行这段代码 但它会导致负载出现 SIGSEGV 分段
  • 如何根据标签将单个 XML 文件拆分为多个

    我有一个带有标签的 XML 文件 我想像这样分割文件
  • 如何正确使用fork、exec、wait

    我正在编写的 shell 需要执行用户提供给它的程序 这是我的程序的非常简短的简化版本 int main pid t pid getpid this is the parents pid char user input NULL size
  • 如何让R使用所有处理器?

    我有一台运行 Windows XP 的四核笔记本电脑 但查看任务管理器 R 似乎一次只使用一个处理器 如何让 R 使用全部四个处理器并加速我的 R 程序 我有一个基本系统 我使用它在 for 循环上并行化我的程序 一旦您了解需要做什么 此方
  • 从 Xlib 转换为 xcb

    我目前正在将我的一个应用程序从 Xlib 移植到 libxcb 但在查找有关我有时使用的 XInput2 扩展的信息时遇到了一些麻烦 libxcb 中有 XInput2 实现吗 如果是的话 在哪里可以找到文档 目前我在使用此功能时遇到问题
  • 如何使用waf构建共享库?

    我想使用构建一个共享库waf http code google com p waf 因为它看起来比 GNU 自动工具更容易 更简洁 到目前为止 我实际上有几个与我开始编写的 wscript 有关的问题 VERSION 0 0 1 APPNA
  • 与 pthread 的进程间互斥

    我想使用一个互斥体 它将用于同步对两个不同进程共享的内存中驻留的某些变量的访问 我怎样才能做到这一点 执行该操作的代码示例将非常感激 以下示例演示了 Pthread 进程间互斥体的创建 使用和销毁 将示例推广到多个进程作为读者的练习 inc
  • 静态方法的 Java 内存模型

    我来自操作系统和 C 语言背景 在代码编译时 世界很简单 需要处理和理解堆栈 堆文本部分等 当我开始学习 Java 时 我确实了解 JVM 和垃圾收集器 我对静态方法感到很有趣 根据我的理解 类的所有实例都会在堆中创建 然后被清理 但是 对
  • 配置tomat的server.xml文件并自动生成mod_jk.conf

    我在用apache 2 2 15 and tomcat6 6 0 24 on CentOS 6 4并希望使用 tomcat 服务器的功能 通过添加以下内容自动生成 mod jk conf 文件
  • C修改printf()输出到文件

    有没有办法修改printf为了将字符串输出到文件而不是控制台 我尝试在互联网上查找一些内容 发现了类似的电话dup dup2 and fflush这可能与此有关 EDIT 也许我不清楚 问题是这是C考试问题 问题如下 解释一个通常将字符串输
  • 每次重新运行终端时,我都必须输入 export PATH=~/anaconda/bin:"$PATH"

    我已经安装了 Anaconda for Mac 但出现了一些问题 当我输入命令时which conda or which ipython I get conda not found and ipython not find 然后我找到这个命
  • 错误:“rjags”的包或命名空间加载失败

    在终端的 conda 环境之一中 我能够成功安装包 rjags 但是 当我在该环境中运行 R 并运行库 rjags 时 出现以下错误 加载所需的包 coda 错误 rjags 的包或命名空间加载失败 rjags 的 loadNamespac
  • linux下如何从文本文件中获取值

    我有一些文本格式的文件 xxx conf 我在这个文件中有一些文本 disablelog 1 当我使用 grep r disablelog oscam conf 输出是 disablelog 1 但我只需要值1 请问你有什么想法吗 一种方法
  • 如何在 Mac OSX Mavericks 中正确运行字符串工具?

    如何在 Mac OSX Mavericks 中正确运行字符串工具 我尝试按照我在网上找到的示例来运行它 strings a UserParser class 但我收到此错误 错误 Applications Xcode app Content
  • 从 Linux 内核模块中调用用户空间函数

    我正在编写一个简单的 Linux 字符设备驱动程序 以通过 I O 端口将数据输出到硬件 我有一个执行浮点运算的函数来计算硬件的正确输出 不幸的是 这意味着我需要将此函数保留在用户空间中 因为 Linux 内核不能很好地处理浮点运算 这是设
  • x86-64 AMD 上 CALL 指令的操作数生成

    以下是示例程序 objdump 的输出 080483b4

随机推荐

  • Tomcat源码:Acceptor与Poller、PollerEvent

    参考资料 Tomcat源码解析系列 十一 ProtocolHandler Tomcat源码解析系列 十二 NioEndpoint 前文 Tomcat源码 启动类Bootstrap与Catalina的加载 Tomcat源码 容器的生命周期管理
  • 联想计算机连接不上蓝牙耳机,thinkpad如何连接蓝牙耳机_thinkpad连接蓝牙耳机的步骤...

    现在的电脑一般都配备有蓝牙功能 可以方便用户们使用一些蓝牙设备 例如最近就有小伙伴问小编thinkpad如何连接蓝牙耳机 那么针对这一问题 今天小编就来为大家整理分享关于thinkpad连接蓝牙耳机的步骤 一起往下看吧 具体步骤如下 1 先
  • VB封装DLL并调用

    首先明确DLL函数是什么 DLL 动态链接库 Dynamic Link Library 一个DLL文件里面可以包含多个函数 其实就是实现共享函数的一种方式 一个应用程序可能需要多个DLL联合起来才可以正常使用 一 新建ActiveX Dll
  • SpringCloud PK K8s 谁更胜一筹

    SpringCloud PK K8s 谁更胜一筹 Spring Cloud 和 Kubernetes 都声称自己是开发和运行微服务的最佳环境 但它们在本质上有很大的不同 解决的问题也不同 在本文中 我们将看看每个平台是如何交付基于微服务架构
  • 在Eclipse中进行Junit测试的个人总结

    1 怎样在Eclipse中集成使用Junit 想要在Eclipse这个IDE中集成使用Junit 首先需要下载Junit的包 具体下载方式可以自行查阅或翻看我之前有关Junit的博客的前半部分 下载完成后 进入Eclipse 打开工程 左键
  • 转帖:如何注册Filter

    参考文章 http apps hi baidu com share detail 16291532 AX文件的一个对外接口DllRegisterServer 由外部调用 比如注册AX的时候 regsvr32 xxx ax 通常情况下 我们的
  • Web3和 NFT将如何影响电子商务?

    每日更新 欢迎交流 感兴趣可以点个关注 你有没有发现 万维网上有很多改变 并且改变速度还很快 也许你已经读到过青少年将数字资产卖到数百万美元 匿名的加密货币创始人颠覆了传统的金钱概念 那么 这些新的 令人兴奋的 而且通常是奇怪的东西到底是关
  • F#的尾递归编译优化需要再好好优化优化

    先来看一道简单的算法题 给定一个整数序列 给定一个目标值 求出该序列中任意三个数之和中最接近目标值的那个数 这道题很容易想到的算法 对序列做从小到大排序 固定其中一个数的下标a 对剩下的两个数双指针b c 指向a右侧区域 窗口 的两端 根据
  • 连Hibernate技术都不清楚,你敢说你自己会ORM框架?

    前言 ORM框架不是一个新话题 它已经伴随我们很多年了 它提供了概念性的 易于理解的数据模型 将数据库中的表和内存中的对象建立了很好的映射关系 在Java中常用的ORM框架主要有两个 Hibernate和iBatis 本篇文章主要介绍Hib
  • SpringBoot 2.6.3 web(静态资源、欢迎页、favicon.ico)

    一 静态资源 静态资源访问路径 static or public or resources or META INF resources 访问方式 项目根路径 静态资源文件名 静态映射 请求进来先在controller中判断能 不能处理 不能
  • SOAP教程[转]

    SOAP教程 需要帮助 SOAP是一个简单的基于XML的协议 它让应用程序跨HTTP进行信息交换 在我们的SOAP教程 你将了解什么是SOAP 以及它是怎样利用XML来让程序间的信息进行交换的 内容目录 SOAP 介绍This chapte
  • qt富文本编辑基本知识(QTextBlockFormat、QTextListFormat)

    可以参考该文章 QTextBlockFormat QTextListFormat 程序员大本营 核心知识如下 如果想开发一个富文本编辑器 html markdown等常见格式 Qt已经为用户完成了几乎所有与编辑有关的具体工作 我们所要做的就
  • yarn中的container概念

    http dongxicheng org mapreduce nextgen understand yarn container concept 步骤1 用户将应用程序提交到ResourceManager上 步骤2 ResourceMana
  • Go语言面试题--基础语法(6)

    文章目录 1 关于init函数 下面说法正确的是 2 下面这段代码输出什么以及原因 3 下面这段代码能否编译通过 如果可以 输出什么 1 关于init函数 下面说法正确的是 A 一个包中 可以包含多个 init 函数 B 程序编译时 先执行
  • centOS7下Spark安装配置

    环境说明 操作系统 centos7 64位 3台 centos7 1 192 168 190 130 master centos7 2 192 168 190 129 slave1 centos7 3 192 168 190 131 sla
  • STM32端口功能详情图

    硬件接口对照表 注释标识 对应芯片IO 上下拉 功能 接口封装 电源归属 可外接IO 1 无 无 电源接口 DC 5 5 2 1 无 不可以 2 无 无 电源开关 无 3 无 无 电源接口 XT30 4 无 无 DC5V4A输出 USB母座
  • easycms v5.5 分析

    前言 这个awd打的悲 后台默认用户名密码为admin admin 但是几乎所有人都改了 而且一进去看到这个cms就有点懵逼 都不知道这个cms是干嘛的 没用过相似的cms 虽然网上找出了很多相关的漏洞 但是不知道为什么一个都没用上 或者说
  • Qt画圆弧

    Qt画圆弧
  • 第三步:脑波提取alpha,beta,delta,theta

    4 brain power py import os from process eeg import iir processing import pandas as pd import numpy as np def mkdir path
  • shell编程--函数

    函数 定义格式 1 function name command1 commandn 2 function function name command1 commandn 注意 所有函数需要在使用前被定义 一般将函数定义放在脚本开始地方 自定