Bash:我自己的退出程序

时间:2014-07-22 08:26:20

标签: linux bash

是否可以在我的bash脚本文件中定义自己的退出函数。

示例:

$] vi myBash.sh

#!/usr/bash
function myFunc()
{
    echo "Inside myFunc"
}

function exit()
{
    echo "My Own Exit Called"
    exit 0
}

myFunc
exit 0

$] sh myBash.sh
Inside myFunc
My Own Exit Called

$]

1 个答案:

答案 0 :(得分:3)

为EXIT(0)设置陷阱:

trap exit_function_name EXIT

或者

trap 'exit command' EXIT

参考文献:

  

退出[n]

     

导致shell退出状态为n。如果省略n,则退出   status是最后执行的命令的状态。 EXIT上的陷阱是   在shell终止之前执行。

     

陷阱[-lp] [[arg] sigspec ...]

     

shell接收时将读取并执行命令arg   信号sigspec。如果没有arg(并且只有一个sigspec)   或 - ,每个指定的信号被重置为其原始处置(   它进入壳体时的价值)。如果arg是空字符串   shell和by忽略每个sigspec指定的信号   它调用的命令。如果arg不存在且-p已经存在   提供,然后与每个sigspec关联的陷阱命令是dis-   播放。

     

如果sigspec是EXIT(0),则命令arg在退出时执行   外壳

至于你的代码,它可以这样做:

#!/bin/bash

function exit()
{
    echo "My Own Exit Called"
    # exit 0
}

trap exit EXIT

不要再退出,因为它会触发陷阱并再次调用该函数。

更新

创建自定义功能时,使用builtin来调用真实的exit

function exit {
    echo "My Own Exit Called"   
    builtin exit 0  ## I think what you really wanted is builtin exit "$1"
}

这是一个建议,所以你可以传递自己的退出消息并退出代码:

function exit {
    echo "$1"
    builtin exit "$2"
}

exit "My own exit called." 0