在bash中,如何将返回值存储在变量中?

2023-12-25

我知道 Linux 中的一些非常基本的命令,并且正在尝试编写一些脚本。我编写了一个函数,用于计算 5 位数字中最后 2 位数字的总和。该函数应将所得总和连接在最后 2 位数字之间并返回它。我想返回这个值的原因是因为我将在另一个函数中使用这个值。

例如:如果我有 12345,那么我的函数将计算 4+5 并返回 495。

#!/bin/bash

set -x
echo "enter: "
        read input

function password_formula
{
        length=${#input}
        last_two=${input:length-2:length}
        first=`echo $last_two| sed -e 's/\(.\)/\1 /g'|awk '{print $2}'`
        second=`echo $last_two| sed -e 's/\(.\)/\1 /g'|awk '{print $1}'`
        let sum=$first+$second
        sum_len=${#sum}
        echo $second
        echo $sum

        if [ $sum -gt 9 ]
        then
               sum=${sum:1}
        fi

        value=$second$sum$first
        return $value
}
result=$(password_formula)
echo $result

我试图回显并查看结果,但我得到的输出如下所示。

-bash-3.2$ ./file2.sh 
+++ password_formula
+++ echo 'enter: '
+++ read input
12385
+++ length=8
+++ last_two=85
++++ echo 85
++++ sed -e 's/\(.\)/\1 /g'
++++ awk '{print $2}'
+++ first=5
++++ echo 85
++++ sed -e 's/\(.\)/\1 /g'
++++ awk '{print $1}'
+++ second=8
+++ let sum=5+8
+++ sum_len=2
+++ echo 5
+++ echo 8
+++ echo 13
+++ '[' 13 -gt 9 ']'
+++ sum=3
+++ value=835
+++ return 835
++ result='enter: 
5
8
13'
++ echo enter: 5 8 13
enter: 5 8 13

我还尝试将结果打印为:

password_formula
RESULT=$?
echo $RESULT

但这给出了一些未知的价值:

++ RESULT=67
++ echo 67
67

如何正确存储正确的值并在屏幕上打印(以再次检查)?


最简单的答案:

函数的返回码只能是 0 到 255 范围内的值。 要将这个值存储在变量中,您必须像本示例中那样执行操作:

#!/bin/bash

function returnfunction {
    # example value between 0-255 to be returned 
    return 23
}

# note that the value has to be stored immediately after the function call :
returnfunction
myreturnvalue=$?

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

在bash中,如何将返回值存储在变量中? 的相关文章

  • 为什么 Linux 没有 DirectX API?

    在考虑现代显卡的 Windows 系统上 DirectX API 的驱动程序端实现时 我想知道为什么此实现在非 Windows 系统 尤其是 Linux 上不可用 由于明显缺乏此功能 我只能假设有一个我无视的充分理由 但在我的原始理解中 我
  • 适用于 Linux 的轻量级 IDE [关闭]

    就目前情况而言 这个问题不太适合我们的问答形式 我们希望答案得到事实 参考资料或专业知识的支持 但这个问题可能会引发辩论 争论 民意调查或扩展讨论 如果您觉得这个问题可以改进并可能重新开放 访问帮助中心 help reopen questi
  • linux下无法创建僵尸进程

    嗯 我有一个奇怪的问题 我无法在我的项目中创建僵尸进程 但我可以在其他文件中创建僵尸进程 有简单的说明 int main if fork 0 printf Some instructions n else sleep 10 wait 0 r
  • python获取上传/下载速度

    我想在我的计算机上监控上传和下载速度 一个名为 conky 的程序已经在 conky conf 中执行了以下操作 Connection quality alignr wireless link qual perc wlan0 downspe
  • 使用 \r 并打印一些文本后如何清除控制台中的一行?

    对于我当前的项目 有一些代码很慢并且我无法使其更快 为了获得一些关于已完成 必须完成多少的反馈 我创建了一个进度片段 您可以在下面看到 当你看到最后一行时 sys stdout write r100 80 n I use 80覆盖最终剩余的
  • GitHub Actions:如何将 toJSON() 结果传递给 shell 命令

    因此 我正在与 Github Actions 合作进行端到端测试 我正在查看的设置是让一项作业检索要测试的 url 列表 而我的第二项作业使用该列表创建一个矩阵并测试所有这些 我的问题是 当我实际运行测试脚本时 必须从命令行完成 因为我使用
  • 在 Linux 上以编程方式设置 DNS 名称服务器

    我希望能够通过我的 C C 程序为 Linux 上的 DNS 名称服务器添加 IP 地址 我在一个带有只读 etc resolv conf 的嵌入式平台上 这意味着我不能简单地将 nameserver xxx xxx xxx xxx 行添加
  • tcpdump 是否受 iptables 过滤影响?

    如果我的开发机器有iptables规则到FORWARD一些数据包 这些数据包是否被 tcpdump 捕获 我有这个问题 因为我知道存在其他链称为INPUT如果数据包路由到 它会过滤发往应用程序的数据包FORWARD链 它会到达吗tcpdum
  • 执行“minikube start”命令时出现问题

    malik malik minikube start minikube v1 12 0 on Ubuntu 18 04 Using the docker driver based on existing profile Starting c
  • Bash for Windows 10 gcc 不会编译粘贴到根目录中的 c 文件

    正如标题所示 如果我将在其他地方编写的c文件粘贴到Linux子系统的根目录中 则无法编译它 我做了一个测试 我制作了两个不同标题的 hello world 程序 一个在 vi 中 我可以从 bash 界面进入 另一个在其他地方 当我编译了
  • 如何在linux中以编程方式获取dir的大小?

    我想通过 C 程序获取 linux 中特定目录的确切大小 我尝试使用 statfs path struct statfs 但它没有给出确切的大小 我也尝试过 stat 但它返回任何目录的大小为 4096 请建议我如何获取 dir 的确切大小
  • GMail 421 4.7.0 稍后重试,关闭连接

    我试图找出为什么它无法使用 GMail 从我的服务器发送邮件 为此 我使用 SwiftMailer 但我可以将问题包含在以下独立代码中
  • 使用非规范地址检索内存数据会导致 SIGSEGV 而不是 SIGBUS

    我无法使用以下汇编代码产生 总线错误 这里我使用的内存地址不是合法的 规范地址 那么 我怎样才能触发该错误呢 我在带有 NASM 2 14 02 的 Ubuntu 20 04 LTS 下运行这段代码 但它会导致负载出现 SIGSEGV 分段
  • 使用循环在 C 中管道传输两个或多个 shell 命令

    我正在尝试执行ls wc l通过 C 语言程序 而不是使用命令行 这是我当前的工作代码 int main int pfds 2 pipe pfds pid t pid fork if pid 0 The child process clos
  • 如何让R使用所有处理器?

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

    我正在 Windows 上的 Visual Studio 2013 中开发 Net 4 5 1 MVC5 应用程序 现在我想知道 是否可以在Linux Ubuntu 12 04 上运行这个应用程序 可以使用OWIN吗 Owin 可以自托管运
  • Bash 实例未嵌套在 Dockerfile `RUN` 中

    嵌套 bash 实例会递增 SLVL 环境变量 http tldp org LDP abs html internalvariables html http tldp org LDP abs html internalvariables h
  • .net-core:ILDASM / ILASM 的等效项

    net core 是否有相当于 ILDASM ILASM 的功能 具体来说 我正在寻找在 Linux 上运行的东西 因此为什么是 net core ildasm 和 ilasm 工具都是使用此存储库中的 CoreCLR 构建的 https
  • C修改printf()输出到文件

    有没有办法修改printf为了将字符串输出到文件而不是控制台 我尝试在互联网上查找一些内容 发现了类似的电话dup dup2 and fflush这可能与此有关 EDIT 也许我不清楚 问题是这是C考试问题 问题如下 解释一个通常将字符串输
  • 使用 python 脚本更改 shell 中的工作目录

    我想实现一个用户态命令 它将采用其参数之一 路径 并将目录更改为该目录 程序完成后 我希望 shell 位于该目录中 所以我想实施cd命令 但需要外部程序 可以在 python 脚本中完成还是我必须编写 bash 包装器 Example t

随机推荐

  • 使用 Haxe 将参数传递给延迟函数

    你知道是否有一种简单的方法可以将一些参数传递给通过调用的函数 haxe Timer delay func delay 我所说的 简单 是指无需创建任何自定义计时器 您可以使用bind https haxe org manual lf fun
  • 本地主机 - 您的浏览器已阻止或不支持 Cookie [关闭]

    Closed 这个问题是与编程或软件开发无关 help closed questions 目前不接受答案 我刚刚在我的本地主机上设置了这个多站点 WordPress 它由一个域 local example com 和 2 个子域 local
  • 引用第 3 方程序集的最佳实践

    我一直想知道引用第 3 方程序集时的最佳实践是什么 前段时间我问了一个问题 依赖关系和引用 我到底应该引用什么 https stackoverflow com questions 268214 dependencies and refere
  • @Entity 不同数据库上表之间的关系

    我是 Java Enterprise 和 JPA 的新手 使用 Netbeans 的 EclipseLink JPA 2 0 我试图实现不同项目和包中不同 Entity 类之间的链接 但没有成功 数据库 D1 具有表 T1 和引用数据库 D
  • 为什么这个函数会占用大量内存?

    我正在尝试将 1 4 亿位的二进制向量解压到列表中 我正在检查这个函数的内存使用情况 但看起来很奇怪 内存使用量上升至 35GB GB 而不是 MB 如何减少内存使用 sub bin2list This sub translates a b
  • signal() 覆盖其他信号处理程序

    是否signal 函数会覆盖进程可能设置的其他信号调用吗 IE 如果一个SIGINT处理程序已由进程设置 并且 DLL 调用signal SIGINT xxx 处理自己的终止代码 原来的SIGINT处理程序被禁用 The signal ca
  • 时间戳和计算滑动速度

    嘿 我知道已经有一些关于此的帖子 但我仍然找不到针对我遇到的问题的充分答案 我刚刚接触 cocoa 和 iOS 正在开发我的第一个 iOS 游戏 在这个游戏中 我希望能够计算用户滑动的速度 我可以轻松找到滑动动作中连续触摸之间的距离 但很难
  • 如何在 Eclipse 中针对特定文件禁用编译器警告? [复制]

    这个问题在这里已经有答案了 在我的 Eclipse 项目中 有一些生成的 java 文件 我需要将它们用于 SQLJ 并且我无法移动到单独的项目 由于管理开销 这些文件也会定期重新生成 因此不幸的是无法编辑它们 不幸的是 这些文件生成了数百
  • 是否有记录的 Android 版本接收安全更新的生命周期?

    Android 版本是否有官方生命周期来说明每月哪些版本会收到安全补丁 如果你看最新安全公告 https source android com security bulletin 2020 09 01看来 8 0 仍在接收补丁 但我想知道这
  • 具有嵌套条件行为的奇怪工具栏

    我遇到了一个非常奇怪的问题 如果你有一个很深的链ViewBuilder和 if 语句以及工具栏 工具栏中的某些项目是重复的 这是一张图片来说明我的意思 注意 2 个 按我 按钮 重现 注意 我使用的是 macOS Monterey Beta
  • 我的网站上需要有图标吗?如何消除我在 apache 日志中看到的错误?

    我不断在我的 apache 日志中看到 favicon 警告 我该如何摆脱这些 我的网站必须有图标吗 favicon ico是浏览器黑暗时代的产物之一 cca 2000 虽然无法阻止浏览器请求 但创建名为 favicon ico 的 0 字
  • 使用 ng-if 作为 ng-repeat 内部的开关?

    我正在开发 Angular 应用程序 我尝试使用 ng if 并在里面切换NG 重复但没有成功 我有这样的数据 id 52fb84fac6b93c152d8b4569 post id 52fb84fac6b93c152d8b4567 use
  • 在核心 MVC 中是否有任何充分的理由不使用 ViewComponent 而不是 Partial View?

    我是 MVC 新手 决定从 net core 开始 所以我对 core 与旧版本的差异不太了解 我确实找到了下面的问题 它提供了一些见解 但并没有帮助我决定是否可以基本上忽略部分视图 为什么我们应该使用 MVC 6 功能视图组件而不是部分视
  • Silverlight 中的 FrameworkPropertyMetadataOptions

    Silverlight 5 中是否有与 FrameworkPropertyMetadataOptions 等效的工具 我希望能够从我的用户控件强制进行双向绑定 如下所示 public static readonly DependencyPr
  • 从一个列表创建两个随机列表

    我想获取一个包含大约 12 个对象的字符串列表 并将其拆分为两个字符串列表 但将其完全随机化 列表示例 List 1 EXAMPLE 1 EXAMPLE 2 EXAMPLE 3 EXAMPLE 4 EXAMPLE 5 EXAMPLE 6 E
  • 使用 C 语言的套接字编程,使用 select() 函数

    根据我得到的答案这个线程 https stackoverflow com q 3366808 我创建了这个 Server sock init from SFL see http legacy imatix com html sfl time
  • 以编程方式在支持 bean 中创建并添加复合组件

    我正在使用动态仪表板 用户可以根据需要固定和删除项目 现在我有一个问题 我想将现有的复合组件从支持 bean 添加到视图中 我试图从互联网上找到正确的方法来做到这一点 但到目前为止还没有成功 这是我要添加的简单复合组件
  • 在我的 React 应用程序中访问 heroku 配置变量

    我在我的 Heroku 应用程序中定义了一个配置变量 BASE URL 我试图在我的 React 应用程序中访问它 process env BASE URL 但当我 console log 它时 它给了我未定义的信息 因为它似乎不存在 如何
  • Android Studio 更新到 2.0 后冻结

    我刚刚将 Android Studio 从 1 4 更新到 2 0 启动时它在启动屏幕上冻结 是否可以修复它或者我必须重新下载它 这很奇怪 我的 MAC Ubuntu 和 Windows 10 也已更新到 2 0 到目前为止 我没有感觉到任
  • 在bash中,如何将返回值存储在变量中?

    我知道 Linux 中的一些非常基本的命令 并且正在尝试编写一些脚本 我编写了一个函数 用于计算 5 位数字中最后 2 位数字的总和 该函数应将所得总和连接在最后 2 位数字之间并返回它 我想返回这个值的原因是因为我将在另一个函数中使用这个