我有一个bash脚本循环遍历给定路径中的所有文件夹并执行一些操作。
我现在需要这个脚本通过监视我将从服务器更新的文件来自行查找给定路径。
因此,脚本必须:
出于某种原因,当我直接运行脚本时,这是完美的
cd /proper/path/to/todo
FILE=todo.txt
if [ -f $FILE ];
then
FOLDER=$(head -1 $FILE)
echo "path to process:"$FOLDER
fi;
输出正常,文件被读取,输出是“处理路径:/ correct / path / read / from / file”
但是,当我设置一个cron作业来运行此脚本时,$ FOLDER变量为空,因此输出只是“处理路径:”
* * * * * /bin/sh /www/www.mysite.com/myscript.sh >> /www/www.mysite.com/log.txt
请注意: 1.脚本运行 2. if [-f $ FILE]有效,所以找到了文件
这只是头命令失败。
有什么想法吗?谢谢!
答案 0 :(得分:1)
听起来/usr/bin
不在cron的PATH中。试试这个:将此条目添加到cron
* * * * * env > $HOME/cron.env
等一下,看看该文件说的是什么。
Don't parse ls
- 代替for i in $(ls)
做for file in *
。由于for
遍历字,因此任何具有空格的文件名都无法正确处理