我看到这个问题很受欢迎。 下面是我自己的答案。 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,问题可能出在其他地方。我正在检查它们。以上所有代码都有效,但最佳答案是标记的那个;)