Eu tenho um script que se parece com isso:
#!/bin/bash
set -e
tmpdir=$(mktemp -d)
pushd $tmpdir
trap 'popd && rm -rf $tmpdir' EXIT
# Business logic which may succeed or fail...
/bin/false
Quando sai, tudo popd
bem, mas não remove o diretório temporário. Parece que $tmpdir
não se resolve na armadilha, mas como podemos superar isso?
Verifiquei que $tmpdir
não foi resolvido executando novamente o script sem -rf
no arquivo rm
. Que saiu com:
rm: missing operand
em vez do esperado
rm: cannot remove '/tmp/tmp.Y1SdoY5dSu/': Is a directory
Não importa, foi um erro de digitação:
$tmpdir
vs$tempdir
O script REAL que eu estava executando era equivalente a: