oracle uniod,onintr

onintr(1)

名称trap , onintr - 用于响应(硬件)信号的 shell 内置函数

用法概要

sh

trap [argument n [n2]...]

csh

onintr [-| label]

ksh88

*trap [arg sig [sig2...]]

ksh

+trap [-p] [action condition...]

描述

sh

当 shell 接收数字或符号信号 (n) 时,会读取和执行 trap 命令 argument。(注意:设置陷阱和执行陷阱时,分别扫描一次 argument。)陷阱命令按照信号编号或对应符号名称的顺序执行。尝试对输入到当前 shell 时忽略的信号设置陷阱将不起作用。尝试对信号 11(内存故障)设置陷阱会生成错误。如果 argument 不存在,则会将所有陷阱 n 重置为其原始值。如果 argument 为空字符串,则 shell 及其调用的命令将忽略该信号。如果 n 为 0,将在退出 shell 时执行命令 argument。不带参数的 trap 命令输出与各信号编号关联的命令的列表。

csh

onintr 控制 shell 在发生中断时的操作。未指定参数时,onintr 在中断时将恢复 shell 的缺省操作。(shell 会终止 shell 脚本并返回到终端命令输入级别)。指定了 − 参数时,shell 将忽略所有中断。指定了 label 参数时,当收到中断信号时或者当某个子进程因为被中断而终止时,shell 将执行 goto label。

ksh88

trap 将 arg 用作要在 shell 接收信号 sig 时读取和执行的命令。设置陷阱和执行陷阱时,分别扫描一次 arg。可以将各个 sig 指定为信号编号或信号名称。trap 命令按照信号编号的顺序执行。尝试对输入到当前 shell 时忽略的信号设置陷阱将不起作用。如果 arg 已省略或为 −,则会将各个 sig 的陷阱重置为其原始值。如果 arg 为空(空字符串,例如 "")字符串,则 shell 及其调用的命令将忽略该信号。如果 sig 为 ERR,则只要命令的退出状态为非零值,就会执行 arg。如果 sig 为 DEBUG,则在每个命令之后执行 arg。对于在任何函数外部设置的 trap,如果 sig 为 0 或 EXIT,则会在退出 shell 时执行命令 arg。不带参数的 trap 命令输出与各信号编号关联的命令的列表。

在本手册页中,前面加有一个或两个 *(星号)的 ksh88(1) 命令将通过以下方式进行特殊处理:

命令完成时,该命令前面的变量赋值列表仍然有效。

在变量赋值之后处理 I/O 重定向。

脚本中包含的错误会导致其中止。

如果字的后面是前面加有**的命令且字为变量赋值的格式,则使用与变量赋值相同的规则扩展这些字。这表示在 = 符号之后执行波浪号替换,并且不执行字拆分和文件名生成。

ksh

trap 是一个特殊的内置函数,用于定义发生诸如接收信号之类的情况时要执行的操作。trap 也可以用于在标准输出中显示当前的陷阱设置。

如果 action 为 -,则 trap 会将每种情况重置为缺省值。如果 action 为空字符串,则 shell 会忽略每种情况(如果发生)。否则,发生相应的情况之一时,shell 将读取和执行参数 action,就像由 eval 处理一样。陷阱操作将覆盖与每种指定情况关联的以前的所有操作。执行陷阱不会更改 $? 的值。

condition 可以是信号名称或信号编号,也可以是以下几项之一:

EXIT

shell 退出时执行该陷阱。如果在带有 function 保留字的函数中定义了该选项,函数返回时将在调用者的环境中执行陷阱。陷阱操作将恢复为调用函数时的值。

0

与 EXIT 相同。

DEBUG

在每个简单命令执行之前但在参数扩展之后执行。

ERR

每当 set -e 会导致 shell 退出时就会执行。

KEYBD

通过终端设备输入密钥时执行。

信号名称不区分大小写,sig 前缀是可选的。无法捕获或重置输入到非交互式 shell 时忽略的信号,但是这样做不会报告错误。使用除 1、2、3、6、9、14 和 15 之外的信号编号不可移植。

尽管 trap 是一个特殊内置命令,但是指定 shell 不了解的情况会导致 trap 以非零退出状态退出,但不会终止正在调用的 shell。

如果未指定操作或情况,则会将当前的所有陷阱设置写入标准输出。

ksh 中的 trap 内置命令支持以下选项:

–p

导致当前陷阱以可作为用于重新创建当前陷阱的 shell 输入处理的格式输出。

ksh 中的陷阱内置命令将以下列值之一退出:

0

成功完成。

>0

出现错误。

在本手册页中,前面有一个或两个 +(加号)的 ksh(1) 命令按以下方式特殊处理:

命令完成时,该命令前面的变量赋值列表仍然有效。

在变量赋值之后处理 I/O 重定向。

脚本中包含的错误会导致其中止。

它们不是有效的函数名称。

如果字的后面是前面加有 ++ 的命令且字为变量赋值的格式,则使用与变量赋值相同的规则扩展这些字。这表示在 = 符号之后执行波浪号替换,并且不执行字拆分和文件名生成。

属性

有关下列属性的说明,请参见 attributes(5):

属性类型

属性值

可用性

system/core-os

另请参见

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值