Bash脚本:根据文件内容执行操作

我有一个bash脚本,通过给定path内的所有文件夹循环,并执行一些操作。

我现在需要这个脚本来自己find给定的path,通过监视一个文件,我将从我的服务器更新。

所以,脚本必须:

  1. 检查文件todo.txt是否存在
  2. 读取文件的第一行
  3. 在第一行中定义的文件夹内执行操作
  4. 删除todo.txt
  5. 使用todo.txt中find的同一行添加done.txt

出于某种原因,当我直接运行脚本时,这个工作是完美的

cd /proper/path/to/todo FILE=todo.txt if [ -f $FILE ]; then FOLDER=$(head -1 $FILE) echo "path to process:"$FOLDER fi; 

输出是好的,文件被读取,输出是“进程的path:/ correct / path / read / from / file”

但是,当我设置一个cron作业来运行这个脚本时,$ FOLDERvariables是空的,所以输出只是“处理path:”

 * * * * * /bin/sh /www/www.mysite.com/myscript.sh >> /www/www.mysite.com/log.txt 

请注意:1.脚本IS已运行2. if [-f $ FILE]起作用,所以find该文件

这只是头部命令失败。

有任何想法吗? 谢谢!

听起来像/usr/bin不在cron的PATH中。 试试这个:将此条目添加到cron中

 * * * * * env > $HOME/cron.env 

等一下,看看那个文件说的是什么。


不要分析ls – 而不是for i in $(ls) for file in *做。 由于for 单词 for迭代,任何具有空格的文件名都不能正确处理