我想知道如何使这个脚本工作:
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
我觉得这很简单,但我已经被困在这里很久了 有什么帮助吗?
答案 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