如何在shell脚本中调用函数?

2024-01-10

我有一个有条件调用函数的 shell 脚本。

例如:-

if [ "$choice" = "true" ]
then 
  process_install
elif [ "$choice" = "false" ]
then 
  process_exit
fi

process_install()
{
  commands...
  commands...
}

process_exit()
{
  commands...
  commands...
}

请让我知道如何实现这一目标。


你不指定which外壳(有many http://en.wikipedia.org/wiki/Unix_shell#Shell_categories),所以我假设伯恩壳牌 http://en.wikipedia.org/wiki/Bourne_shell,我认为你的脚本开头是:

#!/bin/sh

请记住用 shell 类型标记未来的问题,因为这将帮助社区回答您的问题。

您需要定义您的功能before你打电话给他们。使用():

process_install()
{
    echo "Performing process_install() commands, using arguments [${*}]..."
}

process_exit()
{
    echo "Performing process_exit() commands, using arguments [${*}]..."
}

然后您可以调用您的函数,就像调用任何命令一样:

if [ "$choice" = "true" ]
then
    process_install foo bar
elif [ "$choice" = "false" ]
then
    process_exit baz qux

此时您可能还希望检查是否有无效的选择......

else
    echo "Invalid choice [${choice}]..."
fi

查看它以三个不同的 ${choice} 值运行。 http://ideone.com/FvOC9

祝你好运!

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

如何在shell脚本中调用函数? 的相关文章

  • 如何以管理员身份在 rake 任务中运行 shell 命令?

    我有一个简短的 cmd 文件 我想将其作为部署过程的一部分运行 不幸的是 cmd 文件需要管理员权限 是否可以从 rake 中获得管理员权限 或者我是否需要以管理员身份启动 shell 您可以尝试runas http ss64 com nt
  • 如何在 PHP 中运行 shell 脚本?

    我正在尝试使用 PHP 触发 shell 脚本的运行 本质上 当用户在我们用 PHP 编写的网站上完成一个操作时 我们希望触发一个 shell 脚本 该脚本本身调用一个 Java 文件 提前致谢 See shell exec http ph
  • 每个命令都返回“bash:<命令>:找不到命令...”[关闭]

    Closed 这个问题是无法重现或由拼写错误引起 help closed questions 目前不接受答案 我刚刚安装了 Scala 并添加了路径gedit bashrc export SCALA HOME home avijit sca
  • shell中如何从数组中随机选择一个项目

    我正在 Shell 脚本中创建一个机器人 Array with expressions expressions Ploink Poink I Need Oil Some Bytes are Missing Poink Poink Piiii
  • 调用 cat 时 shell 脚本挂起

    我有一个 shell 脚本 它通过电子邮件向我发送通过 crontasks 遇到的错误 如下所示 exec gt output cat shopt s nocasematch if output error output warning t
  • Bash 参数引号和 eval

    我编写了一个 bash 日志记录库 用我公司当前正在使用的一些复杂脚本来实现 在进行日志调用时 我一直致力于提供调用脚本的脚本文件名 BASH SOURCE 和行号 LINENO 但是 我不想依赖用户或实现脚本来将这两个变量作为参数传递 如
  • 检查 Bash 数组中是否存在元素[重复]

    这个问题在这里已经有答案了 我想知道是否有一种有效的方法来检查 Bash 数组中是否存在元素 我正在寻找类似于我可以在Python中做的事情 例如 arr a b c d if d in arr do your thing else do
  • 如何在 Makefile 中定义全局 shell 函数?

    我想定义一个shell函数 bin sh test do some complicated tests 1 2 if something then build thisway 1 2 else build otherway 1 2 fi 这
  • sh read 命令会吃掉输入中的反斜杠吗?

    也许最容易用一个例子来解释 echo echo while read in do echo in done 看来read命令将输入 中的反斜杠解释为转义符并删除它们 我需要逐行处理文件而不更改其内容 并且我不知道如何停止在这里智能读取 有任
  • 如何列出 nginx 中的所有虚拟主机

    有没有一个命令可以列出 CentOS 上 nginx 下运行的所有虚拟主机或服务器 我想将结果通过管道传输到文本文件以用于报告目的 我正在寻找与我用于 Apache 的命令类似的命令 apachectl S 2 gt 1 grep 端口 8
  • 使用 grep 查找所有匹配的模式

    In txt1 S01A1P2 S01A1P5 S01A1P4 In txt2 data train wave S01A1P3 mfc data train wave S01A1P7 mfc data train wave S01A1P8
  • adb shell 输入带有空格的文本

    如何发送带有空格的文本 例如 一些文字 using adb shell input text 找到以下解决方案 adb shell input text some stext 工作正常 但是有什么简单的方法可以用 s 替换空格吗 Examp
  • 在 bash 中,如何除以两个变量并输出四舍五入到小数点后 5 位的答案? [复制]

    这个问题在这里已经有答案了 我将两个变量作为输入 将它们相除后 我希望将输出四舍五入到小数点后 5 位 我已经尝试过这种方法 gt sum 12 n 7 output scale 5 sum n bc echo output 我的代码没有显
  • 带有二进制数据的 Bash echo 命令?

    有人可以解释一下为什么这个脚本有时只返回十六进制字符串表示形式的 15 个字节吗 for i in 1 10 do API IV openssl rand 16 API IV HEX echo n API IV od vt x1 w16 a
  • 将变量插入 sh 脚本命令[重复]

    这个问题在这里已经有答案了 bin sh f set proj dir OutputDir for projname in lib proj1 proj2 do mv scripts projname BYTECODE proj dir s
  • Bash 的源命令无法处理从互联网上卷曲的文件

    我正在尝试使用curl从互联网获取脚本文件 如下所示 source lt curl url echo done 我看到的是 完成 得到了回响before卷曲甚至开始下载文件 这是实际的命令和输出 bash 3 2 source lt cur
  • 无法从 bash 脚本使用 nvm

    我正在尝试编写一个 shell 脚本来自动设置我的开发环境 安装 python nvm node mongo 等 我正在使用 nvm 来安装 Node js 它告诉您关闭并重新打开终端以开始使用 nmv 命令 我尝试获取 bashrc 和
  • Python 子进程:无法转义引号

    我知道以前曾问过类似的问题 但它们似乎都是通过重新设计参数的传递方式 即使用列表等 来解决的 但是 我这里有一个问题 因为我没有这个选项 有一个特定的命令行程序 我使用的是 Bash shell 我必须向其传递带引号的字符串 它不能不被引用
  • Ruby 在特定目录中运行 shell 命令

    我知道如何在 Ruby 中运行 shell 命令 例如 x cmd 但是 如何指定运行此命令的目录 有没有类似的脱壳方式 类似subprocess Popen在Python中 subprocess Popen r c mytool tool
  • 使用 hcitool 扫描低功耗蓝牙?

    当我运行此命令时 BLE 设备扫描仅持续 5 秒 sudo timeout 5s hcitool i hci0 lescan 输出显示在终端屏幕中 但是 当我将输出重定向到文件以保存广告设备的地址时 每次运行该命令时 我都会发现该文件是空的

随机推荐

  • R 中 setdiff() 函数的意外行为

    据我了解 setdiff 比较两个向量并给出一个向量中出现但另一向量中未出现的元素 如果是这样 那么给定这些向量 thing1 lt c 1 2 3 thing2 lt c 2 3 4 thing3 lt c 1 2 3 这是我的结果 se
  • 逻辑常量与物理常量之间的差异

    这两个术语有什么区别 为什么我需要mutable 物理 常量来自声明一个对象const 并且原则上可以通过将对象放置在只读存储器中来强制执行 因此它不能更改 尝试改变它会导致未定义的行为 它可能会改变 也可能不会 或者可能会触发保护故障 或
  • std::绑定到std::函数?

    我使用这个得到一个编译错误 std vector
  • JSON结果转字符串

    我有一个JsonResult工作正常 并从一些 POCO 返回 JSON 我想将 JSON 作为字符串保存在数据库中 public JsonResult GetJSON JsonResult json new JsonResult Data
  • Eclipse 如何在 Linux 中找到 JDK?

    我已经手动安装了Eclipse和jdk 我的 JAVA HOME 已设置 我可以运行java版本 and javac 版本命令 但是当我尝试运行 Eclipse 时 它 显示以下消息 A Java Runtime Environment J
  • 使用“输入”事件动态更改背景颜色

    我正在尝试使用 JavaScript 动态更改背景 使用事件监听器监听输入类型 颜色 字段上的 输入 当我从调色板中选择颜色后单击颜色输入字段时 背景颜色会正确更改 但是 我希望背景在用户滚动托盘时动态变化 而不仅仅是在他选择最终颜色时 希
  • 包含嵌入/发布的 Google 文档的 Iframe 的自动高度

    我有一个带有已发布的 Google 文档的 iframe 该文档的内容可能会发生变化 因此我想根据其内容自动调整 iframe 的高度 我找到了一些解决方案 但它们都需要访问子文档的头部 有谁知道如何做到这一点 您可以查看下面我使用的代码的
  • 在 Eclipse 中使用三星 Galaxy 5 作为设备

    我无法在 Eclipse 中使用我的 Samsung Galaxy 5 例如 将 s5 连接到我的计算机时 我无法调试我的应用程序 我在 设备 中看到该设备 但其未知或处于离线状态 我已经在开发者选项中激活了调试模式 它适用于三星 Gala
  • 用于修复损坏的序列化 PHP 数据的正则表达式/代码。

    我有一个巨大的多维数组 已由 PHP 序列化 它已存储在MySQL中 数据字段不够大 末尾已被切断 我需要提取数据 unserialize行不通 有人知道可以关闭所有数组的代码 重新计算字符串长度 手动处理的数据太多了 非常感谢 这是重新计
  • 附加到 asp.net 母版页中的默认标题

    我正在使用 MVC 将标题添加到带有内容占位符的母版页 默认的MVC母版页模板使用以下代码 当我尝试将默认文本添加到内容容器的前面时 它不会在最终呈现的页面中显示文本 我试图让页面显示带有附加 contentp
  • Jquery 滚动到具有相同类的下一个/上一个 div

    我有几个 div 都具有相同的类 帖子 并且我有一个简单的向上和向下导航
  • Python浮点精度和

    我在 python 中有以下数组 n 565387674 45 321772103 48 321772103 48 214514735 66 214514735 65 357524559 41 如果我将所有这些元素相加 我会得到 sum n
  • 使用shutil移动文件时出错

    我正在尝试创建一个简单的函数 查找以某个字符串开头的文件 然后将它们移动到新目录 但我不断从shutil IOError Errno 2 没有这样的文件或目录 18 1 pdf 即使该文件存在 import os import shutil
  • 组件中未定义渲染函数或模板:匿名

    我遇到这样的问题 重新加载页面后出现错误 组件中未定义渲染函数或模板 匿名 我认为该错误是由于 socket io 造成的 这个错误不是发生在本地机器上 而是发生在生产上 这是怎么回事 开发者 https dev jujuway com u
  • 如何在Python中编写字符串文字而不必转义它们?

    有没有一种方法可以在Python中声明一个字符串变量 这样它里面的所有内容都会自动转义 或者有它的文字字符值 I m not询问如何用斜杠转义引号 这是显而易见的 我要求的是一种通用的方法 用于将所有内容都放入字符串文字中 这样我就不必手动
  • 在查询中使用 TOP 1 时出现问题

    我编写了以下查询来获取日期 删除它的时间部分并添加我想要的时间 如果我在没有 TOP 子句的情况下运行此查询 则效果很好 但是当我添加它时 它返回以下异常 从字符串转换日期和 或时间时转换失败 这是查询 SELECT TOP 1 CONVE
  • C# List .ConvertAll 效率和开销

    我最近了解了 List 的 ConvertAll 扩展 我今天在工作中在代码中使用了几次它 将我的大量对象列表转换为其他对象的列表 看起来效果真的很好 但是 我不确定与仅迭代列表和转换对象相比 这有多高效或多快 ConvertAll 是否使
  • Android 应用内计费、非消耗品

    我正在实施应用内计费 用户将能够购买优质内容的访问权限 这是典型的非消耗品 假设优质内容是问题应用程序中的额外问题或类别 我用过this http www techotopia com index php Integrating Googl
  • 如何设置UILabel发光效果的颜色?

    我们通常可以设置fontColorUILabel 的实现方式 label textColor self someTextColor 和阴影 发光 label layer shadowColor self someGlowColor labe
  • 如何在shell脚本中调用函数?

    我有一个有条件调用函数的 shell 脚本 例如 if choice true then process install elif choice false then process exit fi process install comm