Как бороться с отсутствующей ошибкой операнда при попытке rm
У меня есть следующий код
rm "$torrent"/*.{txt,nfo,jpg} && echo "removed \"txt,nfo,jpg\" files"
Если нет файлов для удаления, я получаю ошибку "отсутствует операнд", которую я хотел бы избежать, потому что она вызывает выход 1 для сценария.
Если у меня есть следующий код
rm -f "$torrent"/*.{txt,nfo,jpg} && echo "removed \"txt,nfo,jpg\" files"
rm
всегда оценивается как истина, даже если не было удаленных файлов.
Я хочу отобразить сообщение "удалены.. файлы", если некоторые файлы были удалены. Если файлы не были удалены, я хочу тишины без ошибок.
Я играл с
find "$torrent" -type f -name "*.txt" -or -name "*.nfo" -or -name ".jpg" -delete && echo "files were deleted"
но оно всегда оценивается как true, даже если файлы не были удалены.
1 ответ
Решение
Просто переписать его в правильное if
заявление:
if rm "$torrent"/*.{txt,nfo,jpg}
then
echo "removed \"txt,nfo,jpg\" files"
if
Это позволяет вам реагировать на состояние выхода, пока set -e
действует без выхода из сценария