Если вы хотите иметь дело только с одним архивным файлом за раз, вы можете просто сохранить имя файла в переменной:
file=/var/tmp/backups/splunkbackup$(date '+%y-%m-%d').tar.gz
tar -zcf "$file" /opt/splunk/etc/
rsync -avz "$file" svc_splkbup@10.x.x.x:/...
rm "$file"
Хотя вы можете захотеть удалить файл только в случае успешной передачи, так что вместо этого:
rsync -avz "$file" svc_splkbup@10.x.x.x:/... &&
rm "$file"
Пример:
$ sleep 300 &
[1] 16012
$ echo %1
%1
$ jobs -x echo %1
16012
Здесь %1
— спецификация задания. Номер был взят из [1]
, показанного сразу после создания задания. Безjobs -x
%1
это просто строка, поэтому echo %1
печатает строку. jobs -x
заменяет спецификацию задания на соответствующий идентификатор группы процессов перед запуском echo
.
Если вы хотите что-то сделать с группой процессов, jobs -x
— это способ подставить правильный идентификатор.
Мои тесты показывают, что если задание не существует, то %1
останется буквальным, и команда все равно будет выполнена. Я не нашел способа заставить jobs -x
выйти из строя сам по себе в таком случае, поэтому я думаю, что команда (или весь скрипт )должны быть готовы как-то справиться с этим (, например. выйти из строя без причинения какого-либо ущерба ).