bash set -e and i=0;让i++不同意

2024-04-12

仅当变量的先前值为零时,以下带有调试选项“set -e -v”的脚本才会在增量运算符处失败。

#!/bin/bash
set -e -v
i=1; let i++; echo "I am still here"
i=0; let i++; echo "I am still here"

i=0; ((i++)); echo "I am still here"

bash(GNU bash,版本 4.0.33(1)-release (x86_64-apple-darwin10),还有 GNU bash,版本 4.2.4(1)-release (x86_64-unknown-linux-gnu))

有任何想法吗?


我的问题的答案是不使用let (or shift,或...)但要使用

i=$((i+1))

当尝试通过设置 ' 检查 bash 脚本时以非零状态码退出' with

set -e

bash 手册指出set -e具有以下效果:如果简单命令以非零状态退出,则立即退出。'.

很遗憾let (and shift和...)返回计算结果('如果最后一个参数的值为 0,则 let 返回 1;否则返回 0')。因此,我们得到的是某种返回值,而不是状态代码。有时这个返回值为零,有时为一,具体取决于计算。因此 set -e 将导致脚本退出,具体取决于您的计算结果!除非你不使用它或者诉诸于它,否则没有什么可做的

let i++ || true

正如 arnaud576875 所指出的,顺便说一句,这增加了额外的 CPU 负担。

Using

let ++i

仅适用于 i 不为 -1 的特定情况,如let i++仅当 i 不为 0 时才有效。因此是半解。

虽然我喜欢 Unix,但我别无选择。

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

bash set -e and i=0;让i++不同意 的相关文章

随机推荐

  • 如何在多台机器之间共享 zsh 历史记录?

    我对在机器之间共享配置文件感到非常满意 但我发现我经常想在 zsh Ctrl R 中搜索 但我不记得在哪台机器上输入了命令 理想情况下 我希望它可以从我的任何机器中搜索先前命令的规范重复数据删除列表 鉴于我有时会在没有网络连接的情况下同时在
  • 绕过 OPENQUERY 的字符限制失败使用 EXECUTE

    我目前正在使用 SQL Server Management Studio 17 连接到 Oracle 数据库实例 然后提取一些数据并将其插入到我拥有的 SQL Server 表中 我尝试过执行以下操作 DROP TABLE IF EXIST
  • 如何从magento前端上传产品图片

    我正在尝试在管理面板中上传产品的图片 它工作正常 但现在我想在前端上传产品的图像 我的意思是客户可以从前端上传产品的图像 那么这怎么可能呢 首先在媒体 导入中上传图像 if isset FILES file name FILES file
  • 仅子级的 CSS 选择器,包括文本

    我需要选择 b 标签 但前提是这是 a 中唯一的内容 p 例如 选择 b 中 p p b hello b p 但不在 p b hello b world p 这可能吗 only child不这样做 CSS 选择器对文本节点一无所知 因此 对
  • 如何从命令行运行Matlab?

    是否可以从 Mac 命令行运行 Matlab 命令 The matlab脚本位于binMATLAB 应用程序包的子目录 在我的机器上 这意味着我可以像这样运行它 Applications MATLAB R2012a Student app
  • 来自存储桶的 AWS s3 V3 Javascript SDK 流文件 (GetObjectCommand)

    我查看了所有 AWS 码头和堆栈溢出 甚至去了谷歌的第 4 页 但我一生都无法弄清楚如何从 S3 流式传输文件 V3 的文档非常无用 我找到的所有示例都来自 V2 V3 使用的发送公共仅返回一个承诺 那么我如何获取流并通过管道传输它而不是等
  • 单击编辑文本时推送内容

    我到处寻找解决我的问题的方法 但找不到答案 问题就在这里 我有一个看起来像这样的布局 现在 当我单击编辑文本 搜索栏 时 我希望发生以下情况 软键盘基本上需要将整个屏幕的内容上推 使搜索栏位于顶部 列表视图位于其下方 以便在搜索内容时显示结
  • 为什么 css 变量会覆盖另一个文件的 css 变量?

    当我在各种 CSS 文件中定义变量并将这些文件包含在 HTML 文件中时 它会覆盖以前的变量 为什么会发生这种情况 假设我有 测试1 css root size of font 5rem logo font size var size of
  • 如何获取 HTML 元素节点的实际 CSS 属性值? [复制]

    这个问题在这里已经有答案了 据我了解获取计算样式 https developer mozilla org en US docs Web API Window getComputedStyle方法 它应该返回一个对象 允许访问 HTML 元素
  • 单击时删除点边框

    我正在使用此 CSS 来删除单击超链接时出现的虚线边框 a active a focus input outline 0 outline style none outline width 0 这工作正常 但不适用于具有背景图像的输入按钮 我
  • 接口、静态类问题

    我目前正在将所有游戏代码移动到另一个包中 以便在创建另一个类似游戏时可以简单地重用它 不过我在这方面遇到了一些问题 public interface Sprite abstract class AbstractSprite implemen
  • 有什么方法可以在 Jenkins 中获取 Gitlab 管道工件吗?

    我在gitlab中有一个项目 该项目会在存储库中的每次签入时构建 并在 gitlab 管道成功时创建构建工件 我想在我的詹金斯管道工作中获得这些构建工件 有什么办法可以做到这一点吗 我在 Jenkins 中找不到任何插件来执行此操作 任何帮
  • setInterval 不起作用(Javascript)

    我正在尝试使用 JavaScript 中的 setInterval 定期重绘画布 但是 当我调用 setInterval 函数时 我传递给它的函数只运行一次 这是我的代码的简化版本
  • 无法打开下载保存对话框

    使用下面的代码我无法显示打开 另存为文件对话框 public void ProcessRequest HttpContext context string link context Request QueryString Link stri
  • 在 google app engine python 中设置 cron 作业

    我刚刚开始使用 Google App Engine 所以我仍在学习如何配置所有内容 我编写了一个名为 parsexml py 的脚本 我希望每 10 分钟左右运行一次 该文件位于我的主目录中 与 main py app yaml 等一起 据
  • 自动添加或删除 Woocommerce 购物车中的免费产品

    我正在尝试创建代码 一旦客户达到购物车中的特定价格点 该代码就会自动将商品添加到客户的购物车中 如果他们只订购虚拟产品 我试图排除这种情况的发生 因为 免费礼物 仅适用于正在发货的产品 我使用的代码是以正确的金额添加免费礼物 但并不排除任何
  • 如何以 4/6/7 角度传递表单提交上的所有选中复选框值

    我想在组件中获取表单的所有已检查项目而不使用change or click 功能 因为它无法获取已检查的项目 这是我在 TS 中的数组 PartyRoles Id 1 Name Vendor Checked true Id 2 Name C
  • VSCode 中的 Flutter 初始化

    我一直在使用 VS Code 开发一个 flutter 项目 当我今天打开我的项目时 有一条通知显示 正在初始化 flutter 这可能需要几分钟 然后就被击中了 此外 flutter run 和 flutter doctor 等所有命令都
  • 将 WKNSURLRequest 崩溃为?其他类型

    当我尝试强制转换 WKNSURLRequest 以及其他类 全部来自 WebKit 框架 时 我遇到了严重崩溃 例如在游乐场 import UIKit import WebKit final class Sigh NSObject NSCl
  • bash set -e and i=0;让i++不同意

    仅当变量的先前值为零时 以下带有调试选项 set e v 的脚本才会在增量运算符处失败 bin bash set e v i 1 let i echo I am still here i 0 let i echo I am still he