我正在为自己编写 Bash 脚本来学习脚本。在某些时候,如果脚本被终止,我需要添加陷阱以清除不需要的目录和文件。但是,由于某种原因我不明白,trap 调用清理函数——clean_a()当脚本被杀死但$LINENO指向清理函数本身中的一行,而不是函数本身archieve_it()时——当脚本被杀死时。
预期行为:
clean_a()函数clean_a()函数回显行号,Ctrl+C被按下。让它成为第 10 行archieve_it()。实际发生的情况:
clean_a()函数clean_a()回显一个不相关的行号。比如说,clean_a()函数中的第 25 行。这是作为我脚本一部分的示例:
archieve_it () {
trap 'clean_a $LINENO $BASH_COMMAND'\
SIGHUP SIGINT SIGTERM SIGQUIT
for src in ${sources}; do
mkdir -p "${dest}${today}${src}"
if [[ "$?" -ne 0 ]] ; then …Run Code Online (Sandbox Code Playgroud)