У меня есть сценарий развертывания, который удаляет все файлы в папке tmp перед продолжением, но иногда во время развертывания процесс будет использовать один из файлов tmp, делая rm
команда не работает. Так выглядит мой сценарий
rm -rf app/tmp
tar -xf app.tar
Это чрезмерное упрощение того, что происходит, пожалуйста, не пытайтесь предлагать улучшить процесс развертывания, это строго вопрос о rm
команда
Я думаю о чем-то вроде
# pseudo code
while [[ ! rm -rf app/tmp ]]; do sleep 1; done
tar -xf app.tar
Другими словами: продолжайте пытаться удалить папку, пока в нее никто не добавлял файлы, затем продолжайте выполнение скрипта.
Вы знаете синтаксис, который позволил бы это в bash?
В настоящее время сценарий не работает и никогда не извлекает файлы tar.
Спасибо за ваш вклад.
Похоже, я нашел ответ в другом вопросе: "Как можно запустить команду в bash до успеха"
https://stackoverflow.com/a/5274386/2296642
Я должен использовать until
синтаксис.
until rm -rf app/tmp; do echo trying again; done
tar -xf app.tar
В while
цикл ничего не сравнивает. Он должен на чем-то совпадать; в этом случае мы хотим знать, существует ли каталог. Если он существует, удалите его с помощью rm
, в противном случае, если не существует, выйдите из цикла и запустите tar
команда. Вы не хотите использовать rm
команда внутри while
состояние.
# pseudo code
while [[ -d app/tmp ]]; do rm -rf app/tmp; sleep 1; done
tar -xf app.tar