问题标签 [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.

0 投票
1 回答
822 浏览

shell - 删除 bourne shell 脚本末尾的临时文件

我尝试使用trap在 Bourne shell 脚本末尾删除一个临时文件,但这不起作用:

顺便说一句,这是在函数内部,因此尝试嵌套陷阱。

我该怎么做?

0 投票
2 回答
84 浏览

shell - shell script process termination issue

The above is my function in shell script.

I want to call it in some special conditions...like when:

  1. "kill -9" fires on pid of this script
  2. "ctrl + z" press while it is running on -x mode
  3. server reboots while script is executing ..

In short, with any kind of interrupt in script, should do some action eg. rm -f /var/run/lockfile.pid but my above function is not working properly; it works only for terminal close or "ctrl + c"

Kindly don't suggest to upgrade "bash / sh" version.

0 投票
1 回答
1552 浏览

bash - bash 中的陷阱语法问题

如果发生故障,我打算使用陷阱执行一些清理代码。我有以下代码,但似乎有一些语法问题。

有没有人看到陷阱的编写方式有问题。如果出现错误,陷阱确实可以正常执行,但它还会在下面抛出另一个不需要的错误消息。

如何正确编写以避免错误消息?另外,如果我必须将参数 $LOOP_DEV1 和 $LOOP_DEV2 从主脚本发送到陷阱然后发送到 handle_error 函数怎么办?现在它们在主脚本中作为环境变量导出。我搜索了一些陷阱示例,但找不到类似的东西。

编辑

我将 shebang 从 /bin/sh 更改为 /bin/bash。由于 /bin/sh 已经与 bash 符号链接,我没想到会有独角兽,也没有看到任何独角兽。

0 投票
2 回答
863 浏览

shell - 如何在 solaris 11 shell 脚本中捕获 EXIT?

man signal.h 表示 Solaris 11 中没有 SIGEXIT。如何在我的 shell 脚本中捕获它?或者如何模拟捕获 SIGEXT 的旧行为?

0 投票
1 回答
1953 浏览

shell - 如果收到 SIGINT 或 SIGTERM,是否需要执行陷阱 EXIT?

我有一个简单的脚本

它在不同的外壳中表现不同:

所以我不确定它应该如何运作以及它是否被指定。

0 投票
1 回答
611 浏览

bash - 在 bash 中:处理每个命令行而不使用调试陷阱?

我在我的 bash 环境中内置了一个复杂的机制,它需要在生成提示时执行几个脚本,而且当用户按 Enter 开始处理命令时也需要执行。我将给出一个过于简单的描述:

调试陷阱以相当有限的方式执行此操作:每次执行语句时都会触发。

不幸的是,这意味着当我输入以下内容时:

我没有处理$BASH_COMMAND包含整行的 a ,而是在三个不同的陷阱中获得了三个睡眠。更糟糕的是:

在设置管道时触发所有三个 - 在sleep 1开始执行之前,输出可能会让您相信 sleep 3 正在运行。

我需要一种从一开始就执行脚本的方法,处理整个命令,并且我希望它在运行提示命令时不触发,但如果必须,我可以处理。

0 投票
1 回答
83 浏览

bash - 为什么脚本在5s后不调用清理并杀死脚本,我也想知道它停止的地方

该脚本旨在在 5 秒后自杀。但它不会在 5s 后杀死脚本,也不会调用清理。重要的是我想获得i它何时停止的价值。

0 投票
3 回答
327 浏览

debugging - ksh陷阱中的多个动作

之后sudo su -,我想在 k-shell 历史列表中同时拥有用户名和时间戳。我有命令行:

使用此命令,我期望类似:

UserName Tue Oct 13 15:37:06 CDT 2015 在历史列表中。然而它只显示Tue Oct 13 15:37:06 CDT 2015

这似乎只执行第二个动作date,并忽略或覆盖第一个动作。

我怎样才能在历史列表中拥有用户名和时间戳?

请注意,之所以需要用户名,是因为多个用户对同一个服务用户具有相同的模拟权限。