超出表达式递归级别

2023-12-22

不知道为什么下面的例子会出现错误:

$ a=1; (( a > 0 )) && echo y || echo n
 y
$ a=x; (( a > 0 )) && echo y || echo n
 n
$ a=a; (( a > 0 )) && echo y || echo n
 -bash: ((: a: expression recursion level exceeded (error token is "a")

$ a=a
( no error )
$ declare -i a
$ a=a
-bash: ((: a: expression recursion level exceeded (error token is "a")

这种行为是因为declare -i将赋值的右侧放入算术上下文中。在算术上下文中,bash 递归地取消引用变量名及其值。如果名称取消引用其自身,则会发生无限递归。

为了进一步澄清,只有当相关变量被分配给与变量名称相同的字符串时,您才会得到此行为before设置该名称的整数属性。

$ unset a
$ declare -i a
$ a=a
( This is fine, $a dereferences to 0. )
$ unset a
$ a=a
$ declare -i a
$ a=a
-bash: ((: a: expression recursion level exceeded (error token is "a")

这就是为什么这种情况很少发生。如果您在已经处于算术上下文中时执行分配,则右侧无法解析为任何内容以外一个整数。不会发生递归。所以要么

  1. 做里面的一切(( ))。 (你也可以在那里做作业。)
  2. Use declare -i第一件事;不要混合类型。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

超出表达式递归级别 的相关文章

  • 从 bash 脚本运行节点

    很简单 我正在尝试使用 cron 自动运行 nodejs 脚本 但是脚本本身似乎无法运行该文件 我的脚本很简单 usr bin env node node var node assets js update js 但是 在运行此命令时 它返
  • Bash:循环遍历字符串数组后无法读出带空格的字符串

    我正在使用循环读取数组的内容 该数组包含名为 music 的目录层次结构中的所有目录和文件 内容是 find 命令先前输出的字符串 这个想法是根据流派 艺术家和标题将 directory contents 中每个数组元素的完整目录路径分成子
  • 如何在 mac 中使用“getopt”命令让 bash 处理长参数?

    我想让我的 bash 脚本处理长参数 我发现getopt 但 OS X 不支持它 谁能告诉我为什么getoptBSD 实现了 GNU 没有实现 我尝试构建getopt在 GNU C lib 中 但由于我对 Linux 的技能不佳而失败了 有
  • Bash 脚本 - 迭代 find 的输出

    我有一个 bash 脚本 其中需要迭代 find 命令输出的每一行 但似乎我正在迭代 find 命令中的每个单词 以空格分隔 到目前为止我的脚本看起来像这样 folders find maxdepth 1 type d for i in f
  • `docker run` 输出到 bash 变量 - 奇怪的行为

    我看到一些奇怪的行为从docker run到 bash 变量中 简单的例子 bin bash PWD docker run rm ti ubuntu pwd 2 gt 1 also tried with PWD docker run wit
  • bash 自动完成:添加可能完成的描述

    是否可以使 bash 自动完成功能看起来像 Cisco IOS shell 中一样 我的意思是为每个完成添加简短的描述 如下所示 telnet 10 10 10 TAB Pressed 10 10 10 10 routerA 10 10 1
  • Bash 脚本:#!/bin/bash 是什么意思? [复制]

    这个问题在这里已经有答案了 在 bash 脚本中 什么是 bin bash第一行是什么意思 UPDATE 有区别吗 bin bash and bin sh 这就是所谓的shebang http en wikipedia org wiki S
  • 将 JSON 数组转换为 bash 数组并保留空格

    我想将 JSON 文件转换为 bash 字符串数组 稍后我可以对其进行迭代 我的JSON结构如下 USERID TMCCP CREATED DATE 31 01 2020 17 52 USERID TMCCP CREATED DATE 31
  • 在 shell 脚本中连接命令字符串

    我正在维护一个现有的 shell 脚本 它将命令分配给 shell 脚本中的变量 例如 MY COMMAND bin command dosomething 然后接下来 它通过执行以下操作将 参数 传递给 MY COMMAND MY ARG
  • 目录 * 和文件顺序

    我需要将目录中的所有文件连接到一个文件 但具有指定名称的文件必须位于输出的顶部 只是在做cat gt result将按字母顺序连接所有文件 有什么办法告诉猫放置文件vars css或任何其他输出的开头 现在我只是重命名文件需要首先000 f
  • 如何将参数传递给java bash脚本? [复制]

    这个问题在这里已经有答案了 我有一个简单的 bash 脚本来运行我的 java 程序 就这个 run sh bin sh java jar target my jar arch jar 我想将参数传递给这个脚本 该脚本必须将它们传递给jav
  • 如何使用 bash 显示具有两个子文件夹的文件夹?

    我通过 Cygwin 使用 bash 我有一个大文件夹 a 有很多子文件夹 b 这些子文件夹各有一个或两个子文件夹 c 我想找到所有有两个子文件夹 c 的子文件夹 b 并输出它们 结构如下 a b1 c1 b2 c1 c2 b3 c1 c2
  • shell_exec 的输出被截断为 100 个字符

    当在 shell 中运行以下命令时 curl F file filename http 192 168 0 1 产生以下输出 Accuracy 0 0 1 classification Accuracy 0 0 1 classificati
  • 如何删除最后一次出现模式后的所有行?

    我想删除最后一次出现模式之后的所有行 除了模式本身 file txt honor apple redmi nokia apple samsung lg htc file txt 我想要什么 honor apple redmi nokia a
  • 在bash中,是否有相当于“错误消息”的东西

    在 perl 中 您可以使用错误消息退出die some msg bash 中是否有等效的单个命令 现在 我正在使用命令来实现这一点 echo some msg exit 1 你可以很容易地自己推出 die echo 1 gt 2 exit
  • 如何使用我在 github 中发布的 bash 脚本执行 chsh?

    我有一个要点 我总是用它来在新服务器上安装我需要的软件包 http gist github com 4372049 http gist github com 4372049 我需要做的就是通过 ssh 在新服务器中输入以下内容 bash c
  • 使用 grep 查找包含所有搜索字符串的行

    我有一个文件 其中包含很多与此类似的行 id 2796 some model Profile message type MODEL SAVE fields account 14 address null modification times
  • .profile 无法从 Mac 终端运行

    我有一个 profile 文件 我正在终端中读取并使用别名 但在某些时候 别名由于没有明确的原因而停止工作 其他命令仍在工作 为了快速修复 我删除了 rm 并在用户目录中重新创建了 profile 文件 我可以看到 至少在该目录中没有 ba
  • 如何在bash中使用jq从变量中包含的json中提取值

    我正在编写一个 bash 脚本 其中存储了一个 json 值 现在我想使用 Jq 提取该 json 中的值 使用的代码是 json val code lyz1To6ZTWClDHSiaeXyxg redirect to http examp
  • Pure Bash 替换捕获组

    我有这个示例字符串 test string 13A6 该字符 数字可以是从 0 到 9 以及从 A 到 F 我想要这个输出 1 3 A 6 我有这个工作 result echo test string sed s g 我想在没有 sed 的

随机推荐

  • 在EmacsW32 和cygwin 中使用tramp 可能吗?

    我在使用 Emacs W32 和 cygwin 设置 Trampoline 时遇到一些问题 我已将 emacs 配置为使用 cygwin 作为使用 w32 shell 的 shell 我还将 HOME 环境变量设置为 c cygwin ho
  • 如何在 DynamoDB 中以编程方式查询范围键

    如何在 DynamoDB 中以编程方式查询范围键 我正在使用 Net AWSSDK 我可以使用以下代码查询哈希键 GetItemRequest request new GetItemRequest TableName tableName r
  • 使用多个故事板进行状态恢复

    我正在开发一个具有多个故事板的项目 我想在这个项目中实现状态恢复 我在将第二个故事板上的 ViewController 链接到状态恢复过程时遇到问题 encodeRestorableStateWithCoder decodeRestorab
  • PropertyGrid 控件和下拉列表

    我想创建一个下拉列表作为属性的编辑器 如果我只有字符串作为下拉列表的条目 那么这会很好地工作 使用 StringConverter 但是 当我尝试使用对象列表而不是字符串时 这将不起作用 但请注意它如何适用于普通组合框 这是我的代码 pub
  • iOS:有没有办法通过将所有内容变灰来使视图控制器看起来不活动?

    我希望我的 ViewController 和每个对象都显示为不活动状态 将其全部变灰 有点像 UIAlertView 弹出窗口将背景中的所有内容变灰 我不想手动将每个对象变灰 有没有一种简单的方法可以完成这项工作 UIView grayVi
  • 无法在 Windows 上使用 jar 命令

    jar 命令在我的盒子上不起作用 我已经下载了 jdk 并将 envar Path 设置为包含 jdk bin 目录的路径 然而 我仍然收到那条烦人的消息 jar 不被识别为内部或外部命令 可操作程序或批处理文件 有人有解决这个问题的建议吗
  • 如何使用另一个仅包含项目的列表来对项目:值列表进行子集化?

    我有 2 个清单 一个是单词及其频率列表 另一个是单词列表 a country 3478 island 2900 river 5 b river mountain bank a 中有数千个条目 但 b 中只有数百个条目 我如何子集列出 a
  • Spring Boot Tomcat Jackson中如何防止flushBuffer上的并发锁?

    当我从部署到 Tomcat 8 的 Spring Boot WAR 应用程序中编写 JSON 时 我遇到了并发问题 在 AppDynamics 的屏幕截图中 当 jackson 库执行 flushBuffer 时 似乎需要等待相当长的时间
  • iPad 上的 HTML5 视频 CSS 背景颜色

    目前是否可以有效设置 HTML5 视频元素的背景颜色 关于 HTML5 音频和视频 http developer apple com library safari documentation AudioVideo Conceptual Us
  • iOS 汇编代码

    我想在苹果 iOS 上尝试一些 ARM 汇编代码 只是出于教育目的 我想从 Xcode 中的一些内联代码开始 我的理解是 我需要为 iOS 设备进行编译 例如我的 iPhone 这意味着我需要每年支付 99 美元的会员费 我不认为我可以在
  • 如何使用 .Net 反射按名称搜索属性(忽略大小写)?

    我有以下代码行片段 用于按名称搜索实例的属性 var prop Backend GetType GetProperty fieldName 现在我想忽略 fieldName 的大小写 所以我尝试了以下方法 var prop Backend
  • Python 从字典中写入 JSON 临时文件

    我正在开发一个 python 3 6 项目 在该项目中我需要从 Python 字典编写 JSON 文件 这是我的字典 deployment name sec deployment credentials type type1 project
  • Python openCV matchTemplate 在带有遮罩的灰度图像上

    我有一个项目 我想在图像中找到一堆箭头 如下所示 ibb co dSCAYQ使用以下模板 ibb co jpRUtQ 我在 Python 中使用 cv2 的模板匹配功能 我的算法是将模板旋转 360 度并为每次旋转进行匹配 我得到以下结果
  • 借用的价值寿命不够长,因在闭包中使用而移动 E0597

    我正在 Actix Web 上迈出第一步 但是这个关闭导致我出错 derive Deserialize Serialize Debug Copy Clone pub struct PaginationQuery pub limit Opti
  • 如何使用 Gradle 在没有第一个目录的情况下提取?

    我正在尝试提取一个不带 PARENT 目录的依赖 zip 文件 在使用 Gradle 提取时排除一些文件 这是我所拥有的 这有效 但感觉不对 我希望有更好的方法来做到这一点 我正在提取的 Zip 文件 jar tf parent folde
  • 是否定义了宏 X?

    我尝试编译the code http cpp sh 8vrep使用选项 C 14 define X static cast
  • 我不知道我错过了什么(乌龟)

    我在用着Trinket运行我的python 我已经修改它好几天了 它一直给我这个错误 Traceback most recent call last File tmp sessions 5ecd67058b43cfc0 main py li
  • iframe 标签内的 html 的用途是什么?

    我在某处读过一次 它是后备内容 但当 src 加载失败时它不会显示 p text p In the 当前规格 https html spec whatwg org multipage iframe embed object html the
  • vb.net datagridview 的问题

    您好 下面的代码在单击特定单元格时打开领导者的详细视图 我试图做到这一点 以便当单击一个单元格时 它会将具有所选单元格的 LeaderID 的任何事件的行位置添加到数组 le 中 然而这行代码 If dgdEvents Rows n Cel
  • 超出表达式递归级别

    不知道为什么下面的例子会出现错误 a 1 a gt 0 echo y echo n y a x a gt 0 echo y echo n n a a a gt 0 echo y echo n bash a expression recurs