Я вижу, что этот вопрос становится популярным. Я ответил на свой вопрос ниже. То, что говорит Inian, верно, и это помогло мне лучше проанализировать мой исходный код.
Моя проблема была в FIND
, а не в RM
. Мой ответ дает блок кода, который я сейчас использую, чтобы избежать проблем, когда FIND ничего не находит, но все же передает аргументы в RM, вызывая упомянутую выше ошибку.
СТАРЫЙ ВОПРОС НИЖЕ
Я пишу много и много разных версий одной и той же команды. Все выполняется, но с ошибкой/информацией:
rm: missing operand
Try 'rm --help' for more information.
Это команды, которые я использую:
#!/bin/bash
BDIR=/home/user/backup
find ${BDIR} -type d -mtime +180 -print -exec rm -rf {} \;
find ${BDIR} -type d -mtime +180 -print -exec rm -rf {} +
find "$BDIR" -type d -mtime +180 -print -exec rm -rf {} \;
find "$BDIR" -depth -type d -mtime +180 -print -exec rm -rf {} \;
find ${BDIR} -depth -type d -mtime +180 -print -exec rm -rf {} +
find $BDIR -type d -mtime +180 -print0 | xargs -0 rm -rf
DEL=$(FIND $BDIR -type d -mtime +180 -print)
rm -rf $DEL
Я уверен, что все они верны (потому что все они выполняют свою работу), и если я запускаю их вручную, я не получаю это сообщение обратно, но в сценарии .sh я получаю.
РЕДАКТИРОВАТЬ: поскольку у меня много таких RM, проблема может быть где-то еще. Я проверяю их всех. Все приведенные выше коды работают, но лучший ответ - отмеченный;)