用于在所有目录文件上执行参数作为命令的脚本

时间:2013-01-31 01:31:08

标签: bash

我想知道如何使这个脚本工作:

for f in *.php
do
    for c in seq 1 $#
    do
            eval `eval echo \$$c`
    done
done

脚本y的主要思想是执行在每个文件上传递给脚本的所有命令,例如:

bash script.sh "grep text \$f" "echo \"Done!\""

应该与:

相同
for f in *.php
do
     grep text $f
     echo "Done!"
done

我觉得这很简单,但我已经被困在这里很久了 有什么帮助吗?

2 个答案:

答案 0 :(得分:2)

你可以让它像这样工作:

for f in *.php
do
  for arg
  do
    eval "$arg"
  done
done

更常见(也更安全)的方法是

find *.php -print0 | xargs -0 -I{} "$@"

可以作为./yourscript grep text {}运行,但它不允许任意shell构造。

答案 1 :(得分:1)

bash脚本中的以下简单配方应该可以使用。

for arg in "$@"
do
    find . -name '*.php' -print0 | xargs -n1 -0 -i $arg {}
done