使用“子”函数中的局部变量

2023-11-29

考虑以下代码:

function child()
{
    echo $var
}

function parent()
{
    local var=5
    child
}

我已经在我的机器上测试了它,它似乎可以工作,但我无法找到任何明确描述局部变量的这种用法的信息。也就是说,当我在一个函数中声明一个局部变量并从该函数调用其他函数时,我可以在后者中使用该变量(甚至嵌套得更深)吗?它在 bash 中合法吗?它是所有版本的标准吗?


bash使用动态范围。的价值var in child不是由哪里决定的child被定义,但是由它在哪里定义called。如果主体中没有本地定义child,shell 查找的下一个地方是函数体,其中child被调用,等等。这local修饰符在该调用的本地函数中创建一个变量,因此它不会影响任何封闭范围内的变量值。但它对任何人来说都是可见的enclosed scope.

a () { echo "$var"; }
b () { local var="local value"; a; }

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

使用“子”函数中的局部变量 的相关文章

  • 有没有办法让 Linux CLI IO 重定向持久化?

    我有多个管道命令 如下所示 find options grep options xargs grep options 它们中的每一个都可能产生我不感兴趣的错误 权限错误 文件名空格错误等 因此 我想将所有错误重定向到 dev null 我知
  • bash 递归xtrace

    有没有办法运行 bash 脚本 X 以便如果 X 调用可执行 bash 脚本 Y 则 Y 以 sh eux 开头 X sh Y sh Y sh bin sh echo OK 可以通过导出子 shell 使用父 shell 中设置的相同 sh
  • Linux shell 标题大小写

    我正在编写一个 shell 脚本并有一个如下所示的变量 something that is hyphenated 我需要在脚本中的各个点使用它 如下所示 something that is hyphenated somethingthati
  • 使用 BASH 和 AWK 创建 HTML 表

    我在创建 html 表来显示文本文件中的统计信息时遇到问题 我确信有 100 种方法可以做得更好 但这里是 以下脚本中的注释显示了输出 bin bash function getapistats curl s http api exampl
  • 嵌入定义绑定变量的 Oracle PL/SQL 代码的 Shell 脚本

    如果我运行下面的脚本 我会收到错误SP2 0552 未声明绑定变量 OUTRES 那么 如何定义绑定变量OUTRES以及在哪里定义呢 usr bin bash sqlplus s scott tiger lt lt EOF declare
  • cat/Xargs/命令 VS for/bash/命令

    Linux 101 Hacks 一书的第 38 页建议 cat url list txt xargs wget c 我通常这样做 for i in cat url list txt do wget c i done 除了长度之外 还有什么东
  • bash.sh 运行 cron 的权限被拒绝

    如何在这里使用 bash 脚本运行 cron 我做了如下操作 这里有错误 我想知道如何在 ubuntu 中做到这一点 我现在对它感到震惊 bash sh 文件 bin bash cd var www Controller usr bin p
  • 零垫重命名,例如图片 (2).jpg -> 图片 (002).jpg

    我需要按照标题在所有子文件夹中解释的方式重命名所有图像 我正在考虑用正则表达式提取括号内的数字 然后重命名它 搜索周围我看到有类似的工具rename and mmv但我无法让他们重新命名 jpg 我将不胜感激任何解决我的问题的建议 顺便说一
  • 如何将字符串推送到标准输入?在启动时通过 stdin 提供输入,然后以交互方式读取 stdin 输入 [重复]

    这个问题在这里已经有答案了 有没有办法在调用程序时将字符串 推送 到程序的标准输入流 这样我们就可以达到这样的效果 echo something my program 但不是在之后读取 EOF something my program将从原
  • 如何转义 bash 别名中的空格?

    尝试在我的 bashrc 文件中设置一些别名 这个 export alias umusic Volumes 180 gram Uncompressed 出现以下错误 bash cd Volumes 180 没有这样的文件或目录 当我尝试 c
  • shell 脚本中数组的最大元素及其索引

    如何在 shell 脚本中从数组中找到最大元素及其索引 我有一个数组 a 2 2116565098 2 1238242060 2 1747941240 2 3201010162 2 3677779871 1 8126464132 2 124
  • Bash:替换管道标准输入中的子字符串

    我尝试用新的子字符串替换标准输入中的某个子字符串 在读取几个文件后 我必须从管道获取标准输入cat 然后我想将更改后的字符串向前推到管道中 这是我尝试做的 cat file1 file2 echo cat path to file path
  • git 可以知道你当前的分支是从哪个分支分支出来的吗?

    我想创建一个 git 别名 让我可以从其分支的原始分支同步我的分支 例如 如果我从
  • OS X - 输入“grails”命令后终端重置

    在我的 bash profile 中 我有以下几行 export GRAILS HOME usr share java grails export PATH PATH GRAILS HOME bin GRAILS HOME 是同一目录中 g
  • 如何使用 bash 粘贴来自单独文件的列?

    我想用分隔符 合并不同的列表 第一个列表有 2 个单词 cat first one who 第二个列表有 10000 个单词 cat second languages more simple advanced home expert tes
  • 升级后 pip 损坏

    我做了 pip install U easyinstall 然后 pip install U pip 来升级我的 pip 但是 当我尝试使用 pip 时 我现在收到此错误 root d8fb98fc3a66 which pip usr lo
  • 使用Python的timeit获取“全局名称'foo'未定义”

    我想知道执行一条Python语句需要多少时间 所以我上网查了一下 发现标准库提供了一个名为timeit http docs python org library timeit html旨在做到这一点 import timeit def fo
  • k8s CronJob 在 pod 列表上循环

    我想在特定命名空间中的 pod 上运行循环 但诀窍是在 cronJob 中执行此操作 是否可以内联 kubectl get pods n foo 这里的技巧是在你获得 Pod 列表后 我需要循环并在 15 秒的超时时间内将每个 Pod 删除
  • 如何通过双击使该 file.sh 可执行?

    首先我用的是Mac 接下来 我需要执行这个 file sh 我们将调用它 每次我需要执行它时 我都必须打开终端并输入 cd Users Jacob Documents folderWithFileInIt bash file sh 这没关系
  • Linux 从设备本身运行的脚本卸载设备

    我在路径中安装了一个 iso 映像 mnt iso 在这个 iso 中我有一个安装脚本 install sh 我从 iso 运行安装脚本 最后脚本询问用户是否要卸载 iso 本身 如果用户按 y 脚本将执行以下代码 cd umount mn

随机推荐

  • UILabel 层cornerRadius 对性能产生负面影响

    我创建了一个文档视图 在角落显示页码 页码是一个具有半透明背景色的uilabel 并且有一个角半径 使用cornerRadius的财产view s layer 我已将其放置在UIScrollView 然而 这会使滚动变得不稳定 如果我删除c
  • 你能使用 Array.flatMap 在 Javascript 中返回 n 选择 k 组合吗?

    例如 这是 5 选择 2 var array 0 1 2 3 4 var result array flatMap v i gt array slice i 1 map w gt v w console log result 我怎样才能使用
  • 使用自定义SurfaceView和线程进行Android游戏编程(示例)

    我正在尝试使用 SurfaceView 但是lockCanvas null 令人困惑 当我退出活动时应用程序冻结 另外 即使我使用的教程运行得很好 也没有显示任何内容 而且我不明白我做错了什么 请帮忙 解决办法大概就是这样setWillNo
  • 将多个 ID 映射到 Active Directory 中的电子邮件地址并将结果输出到单个文件

    我正在尝试找到一种方法 将多个用户的 ID 映射到 Active Directory AD 中的关联电子邮件地址 然后将输出附加到 txt 文件中 最终生成包含电子邮件地址列表的单个文件 通过利用 PowerShell AD 工具的以下命令
  • 如何从 Team Foundation Server 删除测试用例

    如何从 Team Foundation Server 中删除测试用例 我已采取以下步骤 首先 我安装了 Team Foundation Server Power Tools这个网站 其次 我在 VS 命令窗口中输入以下内容 witadmin
  • “SQLSTATE[23000]:违反完整性约束”,具有有效约束

    我正在使用 Symfony 2 和 Doctrine 我有 4 个班级 国家 地区 县和地方 District 有一个 Country 外键 县有一个区外 本地有一个区域的外键 问题是 当插入一个县 使用数据装置 时 我收到错误 SQLST
  • 字典Python中重复键的值列表[重复]

    这个问题在这里已经有答案了 如果这个问题已经在这里探讨过 请提前道歉 我在这里查看了不同的答案 但找不到我需要的东西 我的目标是创建一本这样的字典 a 10 9 10 10 b 10 9 1 0 c 0 5 0 1 and so on 我拥
  • 从 jQuery-UI 选项卡获取目标 URL

    我正在开发一个大量使用 jQuery 选项卡和 Ajax 的项目 将数据加载到选项卡本身很简单 但选项卡中的数据需要通过位于选项卡 div 外部的选择框进行过滤 这就是我的问题开始的地方 假设我的选项卡对 URL tab1 html 进行
  • 使用未弃用的 64 位代码替换 CMNewProfileSearch

    我有现有的代码使用CMNewProfileSearch查找然后迭代系统上的颜色配置文件 获取它们的名称和完整路径 很遗憾 CMNewProfileSearch在 Mac OS X 10 5 中已弃用 并且在编译 64 位应用程序时也不可用
  • 如何在 Python 中使用服务帐户凭据创建 Google 表格?

    我创建Service Account Credentials here并得到 json 密钥service json 然后我尝试 from google oauth2 import service account SCOPES https
  • 最新 Chrome 85 更新后的 CORS 问题

    我是这里的新用户 因此 如果我违反了任何规则 请提前道歉 这是我面临的问题 需要建议 我有一个 Chrome 扩展 它与 Gmail 配合使用 并通过 Rails 应用程序的 Phusion Passenger 服务器使用在 nginx 上
  • 如何在 R 中的字符串中添加缺少的右括号?

    我想为具有左括号但缺少右括号的字符串添加右括号 例如 我想将 狗在公园散步 ABC 修改为 狗在公园散步 ABC 我发现了类似的问题和解决方案 但它是在Python中 如何在Python中的字符串中添加缺少的右括号 我尝试修改R中使用的代码
  • 首页“/”上出现 NotAllowedError

    我尝试设置主页 供用户登录或未登录 但我得到了NotAllowedError 这适用于本地服务器 不过 在真正的公共服务器上似乎不起作用 Does NotAllowedError是指遵守 Google App Engine 标准 不将登录信
  • (单击)如果来自函数,则在数组类型的元素上的 *ngFor 内部断开

    in plnkr我重现了一个奇怪的边缘情况 它可能取决于 pixjs 或 webgl 因为它在使用 pixjs 时发生 请注意如何单击列表中的所有元素 但是一旦开始使用 pixij 只需单击按钮 单击就会停止对数组类型的元素起作用 这odd
  • 我怎样才能减少 if else 语句[关闭]

    Closed 这个问题是基于意见的 目前不接受答案 我编写了一个函数 将 和 and 放在三个链接之间 我怎样才能减少 if else 语句 在javascript中 如果计数不为零 则我得到计数 这意味着链接必须显示 否则应该隐藏 在以下
  • System.out 对象属于 System 类还是 PrintStream 类? [关闭]

    很难说出这里问的是什么 这个问题模棱两可 含糊不清 不完整 过于宽泛或言辞激烈 无法以目前的形式合理回答 如需帮助澄清此问题以便重新打开 访问帮助中心 我是编程新手 刚刚开始学习 Java 我很好奇 System out 对象属于 Syst
  • 错误:JAVA_HOME 未正确定义执行 maven

    我安装了java并设置了路径环境 当我运行时echo JAVA HOME在终端中我得到以下输出 usr lib jvm java 7 oracle jre bin java 我也安装了apache maven并改变了environment文
  • R:按组计算 Pearson 相关性和 R 平方

    我正在尝试扩展问题的答案R 过滤数据并计算相关性 要获得一年中每个月 1 一月 的温度和湿度的相关性 我们必须对每个月执行相同的操作 12 次 cor airquality airquality Month 1 c Temp Humidit
  • Apache Spark Dataframe - 从 CSV 文件的第 n 行加载数据

    我想处理一个巨大的订单 CSV 文件 5GB 在文件开头有一些元数据行 标题列在第 4 行中表示 以 h 开头 后跟另一个元数据行 描述可选性 数据行以 d 开头 m Version v1 0 m Type xx m
  • 使用“子”函数中的局部变量

    考虑以下代码 function child echo var function parent local var 5 child 我已经在我的机器上测试了它 它似乎可以工作 但我无法找到任何明确描述局部变量的这种用法的信息 也就是说 当我在