【发布时间】:2013-09-11 14:28:28
【问题描述】:
我创建了一个简单的 bash 脚本来:查找一些文件并执行一个命令。 该命令必须输出一个我需要为每次执行存储的内容。
所以,我有类似的东西:
find /some/folder/ -name "*txt" -exec /bin/sh -c "/path/command -x -f {} > {}.pdf" \;
所以,我会在 /some/folder/ 中找到 txt 文件,对于每个文件,我将执行 /path/command 并将文件路径传递给参数 -f /path/command 的 并且会得到二进制文件,所以我只需要获取输出并添加后缀 .pdf。
问题是,当我手动执行此操作时,一切正常。 但是当我把它放在一个 cron 中时,就会发生这种情况:
- 如果存在 /some/folder/sample.txt 我得到了一个 /some/folder/sample.txt.pdf(所以,找到 和 > 似乎工作正常)但似乎由 /path/command 执行但没有 -f /some/folder/sample.txt 参数。
- /path/command 似乎没有得到 -f /some/folder/sample.txt 并在 created /some/folder/sample.txt 中输出警告消息.pdf 表示需要获取一个 -f 参数。
再次注意,如果我通过命令行(而不是通过 cron)执行此操作,一切正常。
我在这里做错什么了吗?
感谢支持。
【问题讨论】:
-
您可以尝试将
/path/command替换为echo,以便.pdf 文件包含它尝试执行的完整命令。这可能会帮助您找出问题所在。 -
在
cron的情况下,pdf有什么?我想知道在这种情况下,sh命令上的双引号是否受到尊重。 -
同样的问题,更简单的情况 - find /var/tmp/sth -iname *.pdf 在 shell 中有效,在 cron 中无效。 /usr/bin/find 没有任何改变