问题标签 [shell-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.
shell - 捕获 shell 退出代码
我正在编写一个 shell 脚本,并且想要处理我可能遇到的各种退出代码。为了尝试一下,我正在使用这个脚本:
我想我错过了一些东西,但似乎我无法捕获自己的“出口 1”。如果我尝试捕获 0 一切都会解决:
关于捕获 HUP (1) 退出代码有什么我应该知道的吗?
signals - ksh 中的自定义陷阱信号
有没有办法让我在 ksh 中实现自定义假信号?目前正在捕获 ERR 信号并退出。但是,由于更改,有些调用可能不会返回成功,但这是一个有效条件。在这种情况下,我想确保此调用生成不同的信号或以不同的方式处理 ERR。有没有办法做到这一点?
shell - 结束时间戳未在 Shell 脚本上打印:使用陷阱
我有一个用于部署的 shell 脚本。因为我想捕获整个过程的输出,所以我将它包装在一个子外壳中并将其拖尾:
在我使用 subshell 之前,该trap
命令有效。当您按下CNTL-C
时,程序将打印Stopping Script:
日期和日期。
但是,我想确保没有人忘记保存这个脚本的输出,所以我使用了 subshell 来自动保存输出。而且,现在trap
似乎不起作用。
我究竟做错了什么?
新的信息
多玩一点。我现在看到问题不在于外壳或子外壳。这该死的管子!
如果我不将输出通过管道传输到tee
,则trap
工作正常。如果我将输出通过管道传输到tee
,则trap
不起作用。
所以,真正的问题是我如何打开输出并且仍然能够使用trap
?
测试程序
在您回答之前,请尝试以下测试程序:
和
顶部的管道连接到somefile....
. 最下面的没有。最下面的,陷阱有效。最重要的是,陷阱没有。看看你是否可以让管道工作并且“脚本被杀死”行打印到 teed out 文件中。
管道确实有效。陷阱没有,但只有当我有管道时。您可以将trap
语句四处移动并放入一层又一层的子壳。我做的一些小事情是错误的,我不知道它是什么。
shell - 在循环中退出 ksh 的惯用方式
我有以下 5 秒计时器,它每秒打印一个星号。
不知何故,陷阱块似乎有点骇人听闻,我想知道是否有更正确的方法来中断整个循环(不仅仅是当前的睡眠周期)。我试过了:
在函数内部和外部的不同位置,但正如我之前提到的,这只会中断当前的睡眠周期。
bash - 在没有临时文件的情况下恢复陷阱
不带参数trap
打印所有陷阱的当前设置命令。但是,子 shell 不继承陷阱,因此保存和恢复陷阱的规范示例在 bash 中失败:
分配的 RHS 上的陷阱在子 shell 中运行,因此 save_traps 始终是空字符串。除了将输出写入trap
临时文件之外,脚本如何找到陷阱的当前命令集?
bash - 为什么这个简单的 bash 陷阱会失败
我对 bash 脚本还是很陌生,我很难弄清楚为什么这个简单的陷阱没有按预期工作。
目标- 创建一个可以通过按CTRL+跳过的可选等待期C。
按CTRL+C - 的预期结果立即回显“没有时间打盹!” 并退出。
按CTRL+C - 的实际结果立即回显“小睡时间结束”。并退出。
为什么我的陷阱函数没有被调用?
bash - JBoss 初始化脚本 - 捕获问题
我有一个用于启动/停止/等 JBoss AS (v7.1.1) 的脚本。我在 SUSE Enterprise 11 上运行,所以提供的 initscript 不起作用。我的脚本遇到的问题是清理函数永远不会被调用。
signals - 在 Bourne shell 中同时观察信号和进程退出
我有一个想要监视另一个程序的 Bourne shell (/bin/sh) 脚本(用于可移植性)。它应该启动另一个程序,然后等待它退出。当第二个程序退出时,它会做一些最后的工作并自行退出。问题是脚本还需要响应信号(例如 USR2)并在这些信号出现时做一些工作。
我天真的实现是:
这行不通。如果我发送 shell SIGUSR2,陷阱会按预期触发,但等待也会结束,返回 140。 /bin/sleep 继续其愉快的方式。典型输出:
这种行为在 dash 和 bash 之间是一致的,我可以方便地访问这两个 Bourne shell 衍生物。
我目前的工作是旋转循环等待子 PID 消失,用 kill 进行探测。自旋循环似乎很浪费,并且如果 PID 被快速重用,我的脚本可能会错误地等待错误进程的窗口扩大。
考虑到我的目标是同时等待另一个进程退出并能够响应信号,是否有更好的解决方案?
bash - 陷阱火灾后退出
拿这个脚本
我想fd
触发一次,无论是从 Control-C 还是脚本正常退出。但是,如果您按 Control-C,它将运行两次。我怎样才能解决这个问题?
linux - shell脚本终止程序但不是脚本本身
我正在使用 shell 脚本自动搜索网络接入点,在 airodump 中,您使用 ctrl + c 停止搜索,我希望它取消搜索但保持我的 shell 脚本运行。因为我想在搜索完 wifi 网络后进行用户输入。我尝试使用陷阱,它停止了 airodump 和我的脚本。
我只是想停止 airodump wifi 搜索并转到我的用户输入 shell 脚本。