Zsh脚本编写与函数使用全解析
1. 信号与伪信号处理
在zsh中,许多信号是对特定事件的响应。例如, TMOUT 变量与 ALRM 信号配合使用。当设定的时间过去后,会发送 ALRM 信号。通过捕获该信号,我们可以执行一些有用的操作,而不只是退出shell。示例代码如下:
zsh% TMOUT=30
zsh% trap 'echo Do something.' ALRM
若30秒内未输入任何内容,就会看到提示信息,之后每30秒重复一次,直到取消 TMOUT 设置。由于使用了操作系统的信号机制,该命令不依赖于提示符,且提示信息出现后提示符不会重新显示,导致显示有些杂乱。
除了真实信号,zsh还提供了一组伪信号。这些信号操作系统并不识别,也不能用 kill 命令发送,但zsh允许捕获它们,用于拦截shell的特定操作。
- EXIT伪信号 :无论shell正常退出还是因信号退出,都会触发该信号。对于清理临时文件等任务,使用 EXIT 伪信号比捕获大量信号更方便。
- RETURN伪信号 :在bash 3版本中,当函数或源脚本返回时会触发该信号。在zsh中,若在函数内定义 EXIT 陷阱,函数退出时会触发,且函数退出后会恢复之前的 EXIT 陷阱。一般情况下,
超级会员免费看
订阅专栏 解锁全文
2

被折叠的 条评论
为什么被折叠?



