在我的主目录中,我有一个名为blabs的脚本,并且我将一个文件作为参数传递给这个bash脚本,如下所示:
./blabs \home\blabs\someFileName
这将给出结果,一切都运行得很好。
现在,我希望自动执行此任务。我希望将每个文件作为参数传递给脚本。位于主directory.So中的名为2016_10_1的目录中有1000个文件。
我写了一个小片断,但它不工作properly.Can有人能帮我吗?
for i in (find /home/blabs/2016_10_1/ -type f);do "./blabs /home/blabs/2016_10_1/$i";done错误日志:
-bash: syntax error near unexpected token `('发布于 2017-02-16 18:45:43
Find在所有找到的项目上都有一个内置的execute。因此,此命令将执行您要执行的操作。
find /home/blabs/2016_10_1/ -type f -exec /path/to/blabs {} \; 发布于 2017-02-16 18:42:46
参见ParsingLs,为什么不应该在
循环中解析
find或ls的输出。
您使用如下所示的进程替换语法(<()),
#!/bin/bash
while IFS= read -r file
do
/path/to/blabs "$file"
done< <(find /home/blabs/2016_10_1/ -type f)find的输出被提供给while循环,每次一行,脚本./blabs在该循环上执行。
发布于 2017-02-16 21:35:28
是的,正如Oliv建议的那样,您可以通过添加一个$来快速修复此问题
for i in $(find . -type f); do echo "THIS $i"; donehttps://stackoverflow.com/questions/42271512
复制相似问题