问题标签 [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 - 删除 bourne shell 脚本末尾的临时文件
我尝试使用trap
在 Bourne shell 脚本末尾删除一个临时文件,但这不起作用:
顺便说一句,这是在函数内部,因此尝试嵌套陷阱。
我该怎么做?
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:
- "kill -9" fires on pid of this script
- "ctrl + z" press while it is running on -x mode
- 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.
bash - bash 中的陷阱语法问题
如果发生故障,我打算使用陷阱执行一些清理代码。我有以下代码,但似乎有一些语法问题。
有没有人看到陷阱的编写方式有问题。如果出现错误,陷阱确实可以正常执行,但它还会在下面抛出另一个不需要的错误消息。
如何正确编写以避免错误消息?另外,如果我必须将参数 $LOOP_DEV1 和 $LOOP_DEV2 从主脚本发送到陷阱然后发送到 handle_error 函数怎么办?现在它们在主脚本中作为环境变量导出。我搜索了一些陷阱示例,但找不到类似的东西。
编辑
我将 shebang 从 /bin/sh 更改为 /bin/bash。由于 /bin/sh 已经与 bash 符号链接,我没想到会有独角兽,也没有看到任何独角兽。
shell - 如何在 solaris 11 shell 脚本中捕获 EXIT?
man signal.h 表示 Solaris 11 中没有 SIGEXIT。如何在我的 shell 脚本中捕获它?或者如何模拟捕获 SIGEXT 的旧行为?
shell - 如果收到 SIGINT 或 SIGTERM,是否需要执行陷阱 EXIT?
我有一个简单的脚本
它在不同的外壳中表现不同:
所以我不确定它应该如何运作以及它是否被指定。
bash - 在 bash 中:处理每个命令行而不使用调试陷阱?
我在我的 bash 环境中内置了一个复杂的机制,它需要在生成提示时执行几个脚本,而且当用户按 Enter 开始处理命令时也需要执行。我将给出一个过于简单的描述:
调试陷阱以相当有限的方式执行此操作:每次执行语句时都会触发。
不幸的是,这意味着当我输入以下内容时:
我没有处理$BASH_COMMAND
包含整行的 a ,而是在三个不同的陷阱中获得了三个睡眠。更糟糕的是:
在设置管道时触发所有三个 - 在sleep 1
开始执行之前,输出可能会让您相信 sleep 3 正在运行。
我需要一种从一开始就执行脚本的方法,处理整个命令,并且我希望它在运行提示命令时不触发,但如果必须,我可以处理。
bash - 为什么脚本在5s后不调用清理并杀死脚本,我也想知道它停止的地方
该脚本旨在在 5 秒后自杀。但它不会在 5s 后杀死脚本,也不会调用清理。重要的是我想获得i
它何时停止的价值。
debugging - ksh陷阱中的多个动作
之后sudo su -
,我想在 k-shell 历史列表中同时拥有用户名和时间戳。我有命令行:
使用此命令,我期望类似:
UserName Tue Oct 13 15:37:06 CDT 2015
在历史列表中。然而它只显示Tue Oct 13 15:37:06 CDT 2015
这似乎只执行第二个动作date
,并忽略或覆盖第一个动作。
我怎样才能在历史列表中拥有用户名和时间戳?
请注意,之所以需要用户名,是因为多个用户对同一个服务用户具有相同的模拟权限。