把这个脚本
#!/bin/sh
fd ()
{
echo Hello world
exit
}
trap fd EXIT INT
for g in {1..5}
do
echo foo
sleep 1
done
我想fd
火一次,无论是从控制-C或脚本是否正常退出。 不过,如果你按下Control-C将运行两次。 我怎样才能解决这个问题?
把这个脚本
#!/bin/sh
fd ()
{
echo Hello world
exit
}
trap fd EXIT INT
for g in {1..5}
do
echo foo
sleep 1
done
我想fd
火一次,无论是从控制-C或脚本是否正常退出。 不过,如果你按下Control-C将运行两次。 我怎样才能解决这个问题?
做级联陷阱。 exit 127
将运行EXIT
陷阱和退出代码设置为127,这样你就可以说
#!/bin/sh
fd () {
echo Hello world
# No explicit exit here!
}
trap fd EXIT
trap 'exit 127' INT
我记得有不同的解决方法奋力您的问题几年后,这个学习别人的脚本。 在那之后,我注意到,一些教程做解释了这种技术。 但它不是如明确记载Bash的手册页恕我直言。 (或者它是不是当我需要它。也许有些事情没有在15年内改变... :-)
怎么样在重新界定陷阱默认?
#!/bin/sh
fd () {
echo Hello world
trap - EXIT
exit 127
}
trap fd INT EXIT