我有一个 bash 函数,它被 bash 脚本作为子进程(虽然是反引号)调用。有没有办法让这个函数(在子进程中运行)修改父的陷阱处理程序?此函数创建一个临时文件,我希望在父级退出时对其进行清理。举个例子
function get_roe_dir() {
tmp_dir=`mktemp -d`
if [ $? -eq 0 ]; then
# some processing on $tmp_dir
echo "$tmp_dir"
# Add "rm -rf $tmp_dir" to parent's EXIT trap
fi
}
然后,在调用脚本中,我有类似的东西:
roe_dir=`get_roe_dir`
# Some processing using files in $roe_dir.
一旦这个脚本退出,我想$roe_dir
被删除(使用 EXIT 陷阱)。关于实现这一目标的干净方法的任何想法?
我无法向get_roe_dir()
函数添加 EXIT 陷阱,因为它在子 shell 中执行以捕获输出。因此,一旦get_roe_dir()
返回,子shell 就退出并调用 EXIT 陷阱,删除它创建的临时目录。