首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何执行shell自动化任务?

如何执行shell自动化任务?
EN

Stack Overflow用户
提问于 2017-02-16 18:40:06
回答 3查看 59关注 0票数 0

在我的主目录中,我有一个名为blabs的脚本,并且我将一个文件作为参数传递给这个bash脚本,如下所示:

./blabs \home\blabs\someFileName

这将给出结果,一切都运行得很好。

现在,我希望自动执行此任务。我希望将每个文件作为参数传递给脚本。位于主directory.So中的名为2016_10_1的目录中有1000个文件。

我写了一个小片断,但它不工作properly.Can有人能帮我吗?

代码语言:javascript
复制
for i in (find /home/blabs/2016_10_1/ -type f);do "./blabs /home/blabs/2016_10_1/$i";done

错误日志:

代码语言:javascript
复制
-bash: syntax error near unexpected token `('
EN

回答 3

Stack Overflow用户

发布于 2017-02-16 18:45:43

Find在所有找到的项目上都有一个内置的execute。因此,此命令将执行您要执行的操作。

代码语言:javascript
复制
find /home/blabs/2016_10_1/ -type f -exec /path/to/blabs {} \; 
票数 2
EN

Stack Overflow用户

发布于 2017-02-16 18:42:46

参见ParsingLs,为什么不应该在

循环中解析findls的输出。

您使用如下所示的进程替换语法(<()),

代码语言:javascript
复制
#!/bin/bash

while IFS= read -r file
do
    /path/to/blabs "$file"
done< <(find /home/blabs/2016_10_1/ -type f)

find的输出被提供给while循环,每次一行,脚本./blabs在该循环上执行。

票数 1
EN

Stack Overflow用户

发布于 2017-02-16 21:35:28

是的,正如Oliv建议的那样,您可以通过添加一个$来快速修复此问题

代码语言:javascript
复制
for i in $(find . -type f); do echo "THIS $i"; done
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/42271512

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档