【问题标题】:Delete file after script terminated脚本终止后删除文件
【发布时间】:2017-02-18 20:59:31
【问题描述】:

我在问自己,当我使用 crtl+c 终止 bash 脚本时,该脚本是否会在中止前执行最后一个命令,例如删除由该脚本创建的文件?

【问题讨论】:

    标签: bash shell command abort


    【解决方案1】:

    您可以捕获伪信号EXIT 以在出于任何原因退出之前执行某些操作:

    trap 'rm myfile' EXIT
    

    或捕获 INT 以在退出前执行命令,因为 Control-C:

    trap 'rm myfile' INT
    

    【讨论】:

    • 一个陷阱可以调用一个函数,它可以方便地一起处理所有的清理操作。
    • ERR 陷阱可用于处理错误。它在非零返回码上触发(如果有兴趣,请参阅 Bash 文档,因为有特殊情况)。
    【解决方案2】:

    您希望 ctrl-c 捕获用于后期脚本清理。

    https://rimuhosting.com/knowledgebase/linux/misc/trapping-ctrl-c-in-bash

    【讨论】:

      【解决方案3】:

      你可以先trap ctrl+c by :

      trap ctrl_c INT

      此行将在按下 ctrl+c 后调用函数ctrl_c(停止执行脚本)。 然后创建一个函数ctrl_c 并删除要在该函数中删除的文件,如下所示:

      function ctrl_c(){
           rm -rf ~/PATH-OF-THE-FILE-TO-DELETE
      }
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2016-07-18
        • 2021-08-22
        • 2021-01-17
        • 2013-03-25
        • 1970-01-01
        相关资源
        最近更新 更多