基于文件内容执行操作

基于文件内容执行操作

本文介绍了bash脚本:基于文件内容执行操作的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

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

I have a bash script that loops through all folders inside a given path and performs some actions.

我现在需要这个剧本本身找到指定的路径,通过监控,我会从我的服务器更新文件。

I now need this script to find the given path by itself, by monitoring a file that I will update from my server.

那么,该脚本有:


  1. 检查文件是否存在todo.txt

  2. 读取文件的第一行

  3. 在第一行定义的文件夹内执行操作

  4. 删除todo.txt

  5. 添加done.txt它在todo.txt发现了同样的行

由于某些原因,当我直接运行该脚本,这个工程完美

For some reason, when I run the script directly, this works perfect

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

的输出是不错的,该文件被读取时,输出为路径的过程:/正确的/路径/读/从/文件

The output is good, the file is read, the output is "path to process: /correct/path/read/from/file"

然而,当我成立了一个cron作业运行此脚本时,$文件夹变量是空的,所以输出的只是路径的​​过程:

However, when I set up a cron job to run this script, the $FOLDER variable is empty so the output is just "path to process:"

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

需要注意的是:
1.脚本运行
2.如果[-f $ FILE]的作品,所以文件中找到

Note that:1. the script IS ran2. the if [ -f $FILE ] works, so the file is found

这只是头命令失败。

任何想法?谢谢!

推荐答案

这听起来像的/ usr / bin中不是cron中的PATH。试试这个:添加这个进入的cron

It sounds like /usr/bin is not in cron's PATH. Try this: add this entry into cron

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

等一下,看看这个文件怎么说。

Wait a minute and see what that file says.

- 而不是,因为我在$(LS)不要在* 文件。由于在迭代的,与空白任何文件将无法得到妥善处理。

Don't parse ls -- instead of for i in $(ls) do for file in *. Since for iterates over words, any filename with whitespace will not be handled properly

这篇关于bash脚本:基于文件内容执行操作的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持!

07-26 00:40