#bash
#bash
Вопрос:
Я пытаюсь проверить, есть ли в каталоге существующий файл, если да, то я хотел бы удалить файл перед перемещением нового файла в этот каталог.
if [[${abc_directory}/filename*.dmp]] ; then
rm -rf ${abc_directory}/filename*.dmp
Я думаю, что мне не хватает некоторой логики в операторе if.
Комментарии:
1. Всякий раз, когда у вас возникает ошибка сценария оболочки, хорошим первым шагом является вырезание и вставка вашего кода в shellcheck. очистите и исправьте ошибки (важные) и предупреждения (могут быть важными), которые он идентифицирует. Если у вас возникли проблемы с пониманием его сообщений, тогда подойдите сюда и спросите.
Ответ №1:
Просто сделайте:
rm -f "${abc_directory}"/filename*.dmp
Опция -f
( --force
) указывает rm
игнорировать несуществующие файлы.
Я не включил -r
, потому что, следуя вашему описанию, вы будете удалять отдельные файлы, а не деревья каталогов.
Я экранировал ${abc_directory}
часть, чтобы избежать проблем с пробелами. Предполагается, что abc_directory
он не содержит никаких желаемых подстановочных знаков / заполнителей.
Ответ №2:
В вашем примере вы не ищете конкретный файл, вы используете подстановочный знак. Почему бы просто не сделать rm -rf ${abc_directory}/filename*.dmp
перед перемещением в новый файл и покончить с этим?
Вот как проверить наличие одного файла.
if [ -e ${abc_directory}/filename.dmp ];then
rm -f ${abc_directory}/filename.dmp
fi
Комментарии:
1. Бесполезно проверять существование файла, если единственной причиной является его удаление с помощью
rm -f ...
(-f == —force). Просто вызовитеrm -f ...
.