【发布时间】:2014-07-07 13:26:53
【问题描述】:
运行以下脚本
按 Ctrl+C
观察当前终端行为。
按回车几次,尝试执行一些命令。
#!/bin/bash
LOCK_FILE=/tmp/lockfile
clean_up(){
# Perform program exit housekeeping
echo -e "Signal Trapped, exiting..."
# Do some Special operation
rm -f $LOCK_FILE
#
exit 1
}
touch LOCK_FILE
trap clean_up SIGHUP SIGINT SIGTERM
read -s -p "Password: " var
echo -e "\n Input Password is: $var\n"
我想知道我做错了什么?
我试着做一个干净的出口。
它正在工作,但在退出终端 STDIN 消失后。
【问题讨论】:
-
你还没有说你期望它做什么或它在你的机器上做什么。
-
@l0b0 实际上,我已经对其进行了测试,这很奇怪。在捕获 SIGINT 时,它会退出程序并弄乱您的外壳(编写命令时没有字符出现,按下回车键时没有换行符)。当您键入 reset 时,此问题已修复。不过,我不知道他的剧本为什么会这样做
-
LOCK_FILE未分配,一方面... -
你好,现在请验证,我已经修改了一点。
标签: bash shell terminal signals bash-trap