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 {}、任意のシェル構成は許可されません。

于 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 に答える