Как бороться с отсутствующей ошибкой операнда при попытке rm - PullRequest
0 голосов
/ 30 декабря 2018

У меня есть следующий код

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 всегда оценивается как true, даже если не было удаленных файлов.

Я хочу отобразить сообщение "удалено".. files ", если некоторые файлы были удалены.Если ни один файл не был удален, я хочу тишины без ошибок.

Я играл с

find "$torrent" -type f -name "*.txt" -or -name "*.nfo" -or -name ".jpg" -delete && echo "files were deleted"

, но он всегда оценивался как true, даже если файлы не были удалены.

1 Ответ

0 голосов
/ 30 декабря 2018

Просто перепишите его в правильный оператор if:

if rm "$torrent"/*.{txt,nfo,jpg}
then
  echo "removed \"txt,nfo,jpg\" files"
if

Это позволяет вам реагировать на состояние выхода, пока действует set -e, без сценария, завершающего

...