相同的脚本在cron上将结果归零,而手动获取正确结果

问题描述

#!/bin/bash
cd /ad/bd/cd/dd/ed/zd
count=$(find . -type f|cut -d "/" -f3|wc -l)
echo $count >> /ad/bd/cd/abc.log
#exit

手动提供正确的值。即230

          • ad / bd / script

在cron上方运行时,其值为零,即0

解决方法

尝试在find中指定要在其中查找文件的目录的绝对路径

count=$(find "/ad/bd/cd/dd/ed/zd" -type f | cut -d "/" -f3 | wc -l)

通常,cron在主目录中运行命令。如果要从特定目录运行脚本,请通过命令启动该Shell片段以更改目录,如下所示:

0 10 * * * cd /some/dir && /path/to/script args

请注意,在&&上使用;并没有什么区别,但是如果cd命令失败(例如,由于目标目录没有存在),&&不会执行您的脚本,而;则会执行(但在非预期目录中)。