问题标签 [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.
linux - 如何在全局范围内捕获 bash 中的 on_error?
似乎on_error
Bash 中的陷阱仅在定义它的功能范围内起作用。例如运行此脚本
产生:
有没有办法on_error
全局捕获,这样我就不必分别在每个函数中捕获它?
shell - 如何在 Shell 脚本中捕获 exit 1 信号?
我想尝试捕获信号 1 但失败了
即使是出口1,它总是陷入陷阱0,有谁知道如何解决这个问题?
谢谢
bash - 管道时疏水阀是否按预期工作?
这是问题演示的最小代码:http: //pastebin.com/5TXDpSh5
输出
预期产出
注意:我测试了 OSX 10.9.2 bash (3.2.51) - 其他版本的 bash 与实际预期输出有相同的差异,如下所述
bash - 为什么我的陷阱不起作用?
我写了下面的脚本:
当我通过“进程&”启动进程时,它会运行,给出 PID。我确实杀死了 -10 PID,但我的陷阱不起作用。进程被杀死,但陷阱没有出现。没有给出日期消息。我将不胜感激任何建议。
linux - && 的 Linux 陷阱最佳实践
使用trap
可能有助于编写最干净的 bash 脚本。但是我想知道是否存在解决方案以便在以下情况下捕获错误:
GNU bash,版本 4.2.45
案例确定
案例KO
- 不幸的是,我们到达最后一句好像
&&
使整个句子不是 ERR。
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
?
bash - 执行另一个二进制文件时如何实现 bash EXIT 陷阱?
我想使用 bashEXIT
陷阱并使用它exec
来避免产生新进程。这可能吗?
那是,
$0.$$
使用 bash 的EXIT
陷阱删除临时文件while
从不“触发”陷阱(完成后没有来自rm
, 文件的消息$0.$$
)。
当然,陷阱不能触发是有道理的,因为 bash 在exec
. 有没有办法让它工作和使用exec
?诚然,这是出于好奇而不是实际问题。
bash - Bash ERR 陷阱停止程序
这个陷阱ERR
会停止脚本。其他示例表明可以使用陷阱来继续执行程序,那么为什么会停止呢?
退货
bash - 如何不捕获函数的返回值
如何在 Bash 脚本中处理内部函数的返回值(可能返回非零值)而不被陷阱捕获?
例如,如果perform_test
返回 1,则脚本结束,因为非零返回值被捕获并由exit_handler
函数调用处理。
我该怎么做才能避免这种行为?
谢谢
这里的脚本:
更新:
根据@choroba的回答(使用if perform_test "sthg" ; then
),返回 1没有像我预期的那样被陷阱捕获。
但不幸的是,这个解决方案对于我的用例来说是不完整的:如果函数perform_test
产生错误(例如:找不到命令,没有这样的文件......等),那么这个错误不再被陷阱和脚本捕获不会直接停...
那么,如何“捕获错误而不捕获return 1
”?
这是一个说明它的工作示例:
产生以下输出:
bash - 从使用读取和陷阱的 bashscript 中清除退出
运行以下脚本
按 Ctrl+C
观察当前终端行为。
按回车几次并尝试执行一些命令。
我想知道我在做什么错误?
我试着做一个干净的出口。它正在工作,但在退出终端 STDIN 消失后。