我仍然不太了解" 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
我是否错放了陷阱声明?任何人都可以给我一个建议如何使脚本正确运行陷阱语句?谢谢。
答案 0 :(得分:2)
将trap语句尽早放入代码中;在触发其中一个中断之前,不会执行内容。