陷阱案例陈述(BASH)

时间:2015-10-15 19:53:15

标签: bash

我仍然不太了解" case"的概念。和"陷阱"声明如果它们组合在一起。

我想做什么:

当触发trap语句时,它会删除脚本已创建的每个 TMP (临时文件)。

但是,当我尝试运行此代码时,有时脚本仍会留下一些 TMP 文件

if [ "$#" -eq 1 ]; then 
    TMP=./TMP$$
    cat $FILENAME > $TMP
    case "$1" in
        -b*)awesomeFunction exit 0;;
        -B*)echo "ERROR!" >&2; exit 1;;
        *)echo "ERROR!" >&2; exit 1;;
    esac
    trap "rm -f $TMP" INT HUP TERM
fi

输出示例(触发陷阱语句后)

正确输出:

file1   file2

我的输出:

file1   file2  TMP23242  TMP24452

我是否错放了陷阱声明?任何人都可以给我一个建议如何使脚本正确运行陷阱语句?谢谢。

1 个答案:

答案 0 :(得分:2)

将trap语句尽早放入代码中;在触发其中一个中断之前,不会执行内容。