Linux Bash脚本,清理步骤。
嗨,我有一个bash脚本,它执行一些文件操作,在脚本的最后一步,我发出一些必须执行的清理命令 问题是,如果脚本以某种方式被手动终止(使用cmd-z等),那么这些最后的步骤不会执行,然后必须手动完成。有没有办法确保这些行动?类似于异常处理的finally块。下面是示例代码Linux Bash脚本,清理步骤。,linux,bash,scripting,Linux,Bash,Scripting,嗨,我有一个bash脚本,它执行一些文件操作,在脚本的最后一步,我发出一些必须执行的清理命令 问题是,如果脚本以某种方式被手动终止(使用cmd-z等),那么这些最后的步骤不会执行,然后必须手动完成。有没有办法确保这些行动?类似于异常处理的finally块。下面是示例代码 #rename a folder ($1 being a parameter passed to the script) mv ../project/game ../project/$1 # perform some steps
#rename a folder ($1 being a parameter passed to the script)
mv ../project/game ../project/$1
# perform some steps within the new folder
....
# now comes the cleanup part
mv ../project/$1 ../project/game
这个脚本被许多团队成员执行了很多次,以切换和管理他们的环境,并且在大多数情况下工作得完美无缺。当脚本在清理完成之前中途终止,并且重命名的文件夹和文件使脚本无法再次执行时,就会出现问题
这里有什么方法可以解决这个问题吗?您可以捕获信号
trap finally SIGINT
最后是一些函数。这不会使您的脚本对SIGKILL
免疫,因为它是“不可跟踪的”
请参见您可以捕获信号
trap finally SIGINT
最后是一些函数。这不会使您的脚本对SIGKILL
免疫,因为它是“不可跟踪的”
请参见使用
trap
命令。这里的示例:使用trap
命令。这里的示例:捕获信号多次为我节省了时间,+1用于提供链接。使用清除代码捕获退出伪信号可能是一个更好的主意。@Basilevs这可能是真的,是的!捕获信号多次为我节省了时间,+1用于提供链接。使用清除代码捕获退出伪信号可能是一个更好的主意。@Basilevs这可能是真的,是的!