다음과 같은 스크립트가 있습니다.
#!/bin/bash
set -e
tmpdir=$(mktemp -d)
pushd $tmpdir
trap 'popd && rm -rf $tmpdir' EXIT
# Business logic which may succeed or fail...
/bin/false
종료되면 모든 것이 popd
정상이지만 임시 디렉토리는 삭제되지 않습니다. 이 함정은 해결되지 않은 것 같은데 $tmpdir
어떻게 극복할 수 있을까요?
$tmpdir
다음을 다시 실행하여 .exit -rf
에 포함되지 않았 음을 확인했습니다 rm
.
rm: missing operand
기대보다는
rm: cannot remove '/tmp/tmp.Y1SdoY5dSu/': Is a directory
답변1
신경 쓰지 마세요. 오타였습니다.
$tmpdir
그리고$tempdir
내가 실행한 실제 스크립트는 다음과 같습니다.
#!/bin/bash
set -e
tmpdir=$(mktemp -d)
pushd $tmpdir
trap 'popd && rm -rf $tempdir' EXIT
# Business logic which may succeed or fail...
/bin/false