Linux Bash脚本,清理步骤。

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

嗨,我有一个bash脚本,它执行一些文件操作,在脚本的最后一步,我发出一些必须执行的清理命令

问题是,如果脚本以某种方式被手动终止(使用cmd-z等),那么这些最后的步骤不会执行,然后必须手动完成。有没有办法确保这些行动?类似于异常处理的finally块。下面是示例代码

#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这可能是真的,是的!