Мне нужен свежий временный каталог, чтобы выполнить некоторую работу в сценарии оболочки. Когда работа будет завершена (или если я убью работу на полпути), я хочу, чтобы скрипт вернулся в старый рабочий каталог и удалил временный. В Ruby это может выглядеть так:
require 'tmpdir'
Dir.mktmpdir 'my_build' do |temp_dir|
puts "Temporary workspace is #{temp_dir}"
do_some_stuff(temp_dir)
end
puts "Temporary directory already deleted"
Какой самый лучший удар для доллара, чтобы сделать это в скрипте Bash?
Вот моя текущая реализация. Есть мысли или предложения?
here=$( pwd )
tdir=$( mktemp -d )
trap 'return_here' INT TERM EXIT
return_here () {
cd "$here"
[ -d "$tdir" ] && rm -rf "$tdir"
}
do_stuff # This may succeed, fail, change dir, or I may ^C it.
return_here