0

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

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

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

4

2 回答 2

2

你可以让它像这样工作:

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

一种更常见(和更安全)的方法是

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

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

于 2013-01-31T01:38:21.923 回答
1

bash 脚本中的以下简单配方应该可以工作。

for arg in "$@"
do
    find . -name '*.php' -print0 | xargs -n1 -0 -i $arg {}
done
于 2013-01-31T03:27:41.793 回答