为什么
$ while true ; do 'date; time find /tmp/test -type f \
-exec cp /dev/null {} \;';sleep 3600; done
不起作用,而是返回错误消息:
-bash: date; time find /tmp/test -type f -exec cp /dev/null {} \;: No such file or directory
我尝试过逃避;
,{}
但仍然遇到同样的错误。是的,有一个/tmp/test
目录。
答案1
的参数do
是单个命令;进一步的命令使用命令链。
while true ; do date ; find ... ; sleep 3600 ; done
答案2
while true; do
date
time find /tmp/test -type f -exec cp /dev/null {} \;
sleep 3600
done
命令中的单引号使 shell 将带引号的字符串解释为要执行的命令的名称,但它找不到它,这就是您收到该特定错误的原因。
每小时清空文件的另一种方法/tmp/test
是通过具有以下时间表的 cronjob:
0 * * * * find /tmp/test -type f -exec cp /dev/null {} \;
答案3
删除引号,它将按预期工作(是的,您必须连续有两个分号)。