问题标签 [bash-trap]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
1 回答
886 浏览

linux - 如何在全局范围内捕获 bash 中的 on_error?

似乎on_errorBash 中的陷阱仅在定义它的功能范围内起作用。例如运行此脚本

产生:

有没有办法on_error全局捕获,这样我就不必分别在每个函数中捕获它?

0 投票
1 回答
11918 浏览

shell - 如何在 Shell 脚本中捕获 exit 1 信号?

我想尝试捕获信号 1 但失败了

即使是出口1,它总是陷入陷阱0,有谁知道如何解决这个问题?

谢谢

0 投票
2 回答
1080 浏览

bash - 管道时疏水阀是否按预期工作?

这是问题演示的最小代码:http: //pastebin.com/5TXDpSh5

输出

预期产出

注意:我测试了 OSX 10.9.2 bash (3.2.51) - 其他版本的 bash 与实际预期输出有相同的差异,如下所述

0 投票
1 回答
165 浏览

bash - 为什么我的陷阱不起作用?

我写了下面的脚本:

当我通过“进程&”启动进程时,它会运行,给出 PID。我确实杀死了 -10 PID,但我的陷阱不起作用。进程被杀死,但陷阱没有出现。没有给出日期消息。我将不胜感激任何建议。

0 投票
2 回答
1110 浏览

linux - && 的 Linux 陷阱最佳实践

使用trap可能有助于编写最干净的 bash 脚本。但是我想知道是否存在解决方案以便在以下情况下捕获错误:

GNU bash,版本 4.2.45

案例确定

案例KO

  • 不幸的是,我们到达最后一句好像&&使整个句子不是 ERR。
0 投票
1 回答
1411 浏览

bash - Where does the exit status go after trap/return?

I was playing around with using trap inside a function because of this question, and came up with this secondary question. Given the following code:

If I run d, the trap causes the shell to return from the function without printing 'hi'. So far so good. But if I run it a second time, I get a message from the shell:

-bash: return: can only `return' from a function or sourced script

At first, I assumed this meant the ERR sig was happening twice: Once when false gave a nonzero exit status (inside the function) and again when the function itself returned with a nonzero exit status (outside the function). But that hypothesis doesn't hold up against this test:

If I run the above, no matter how often I run it, I no longer get the can only return from a function or sourced script warning from bash. Why does the shell treat a compound command different from a simple command in a trap arg?

My goal was to maintain the actual exit status of the command that caused the function to exit, but I think whatever is causing the above behavior also makes capturing the exit status complicated:

Wat? Can someone please explain why $s expands to two different values here and, if it turns out to be the same cause, the above differentiation between return and echo +; return?

0 投票
1 回答
6209 浏览

bash - 执行另一个二进制文件时如何实现 bash EXIT 陷阱?

我想使用 bashEXIT陷阱使用它exec来避免产生新进程。这可能吗?

那是,

$0.$$使用 bash 的EXIT陷阱删除临时文件while

从不“触发”陷阱(完成后没有来自rm, 文件的消息$0.$$)。

当然,陷阱不能触发是有道理的,因为 bash 在exec. 有没有办法让它工作使用exec?诚然,这是出于好奇而不是实际问题。

0 投票
1 回答
780 浏览

bash - Bash ERR 陷阱停止程序

这个陷阱ERR会停止脚本。其他示例表明可以使用陷阱来继续执行程序,那么为什么会停止呢?

退货

0 投票
2 回答
1620 浏览

bash - 如何不捕获函数的返回值

如何在 Bash 脚本中处理内部函数的返回值(可能返回非零值)而不被陷阱捕获

例如,如果perform_test 返回 1,则脚本结束,因为非零返回值被捕获并由exit_handler函数调用处理。

我该怎么做才能避免这种行为?

谢谢

这里的脚本:


更新:

根据@choroba的回答(使用if perform_test "sthg" ; then),返回 1没有像我预期的那样被陷阱捕获。

但不幸的是,这个解决方案对于我的用例来说是不完整的:如果函数perform_test产生错误(例如:找不到命令没有这样的文件......等),那么这个错误不再被陷阱和脚本捕获不会直接停...

那么,如何“捕获错误而不捕获return 1”?

这是一个说明它的工作示例:

产生以下输出:

0 投票
1 回答
1915 浏览

bash - 从使用读取和陷阱的 bashscript 中清除退出

运行以下脚本
按 Ctrl+C
观察当前终端行为。
按回车几次并尝试执行一些命令。

我想知道我在做什么错误?
我试着做一个干净的出口。它正在工作,但在退出终端 STDIN 消失后。