把这个脚本退出
#!/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
很好,+1 :) – drAlberT