--include引数を使用してgrepコマンド(bashスクリプト内)、検索するファイル拡張子に渡します。 これらのファイル拡張子は、ユーザーがコマンドラインから引数として入力します(4番目の引数はファイル拡張子をカンマで区切って保持します)。 bashスクリプト内でgrepコマンドを使用して--include引数に変数値を渡します。
この
は私のスクリプトです:...
comando="egrep -irn . --include="\\*.{${4}}" --exclude=\*.{class} -e "${3}""
echo $comando
resultado=eval $comando
echo $resultado
(comandoをエコーするとき、私はこれを取得:egrepの私もコマンドで文字列を作成し、このように、evalを呼び出してみました
...
echo "Searching in ${4} files for pattern"
egrep -irn . --include=\*.{"${4}"} --exclude=\*.{class} -e "${3}"
...
--include = *。{wsdl、xml} --exclude = *。{class} -e textoこれはまさにコマンドラインで実行された場合、いくつかのマッチを返すコマンドである)
私はまた、すべてを含む引数を指定して変数を渡してみました:
...
argumento="\\*.{${4}}"
egrep -irn . --include=$argumento --exclude=\*.{class} -e "${3}"
...
これは、スクリプトは、コマンドラインから呼び出される方法です。
SH ./searchRecursiveIterativeEgrep.shを/ tmp /テスト/別/の/ usr/local/aux/"texto" wsdl、xml
どのようにこれを達成するためのアイデアですか? ありがとう
ファイルを見つけるためのUNIXツールは、適切に 'grep'ではなく' find'という名前です。あなたがGNU grepsのオプションを見たのは忘れてしまったのですが、それらを追加することはひどい考えです(出力をソートするためのgrepオプションは何ですか?)だけで、ファイルを見つけるためには 'find'を、** G **はローバーリー検索ファイル内の** R ** egular ** E ** xpressionおよび** P ** rint用の一致するテキスト。あなたの人生ははるかに簡単になります。 –
ファイル内に正規表現を見つけようとしているので、grepが必要です。コマンドは期待どおりに動作しますが、コマンドラインからの引数では動作させることはできません。 –
a)grepはファイル内の正規表現を見つけることのできる唯一のツールではありません。b)grepを使ってファイル内の正規表現を見つけることはお勧めできません。grepを使用しないでくださいファイルが間違ったアプローチであり、あなたのgrepコマンドをばかげて複雑にしています。 'find'を使ってファイルを探し、' grep'(または他のツール)を使って 'find'が見つけたファイル内の正規表現を探します。 'findの行に沿った何か。 -name '* .extension' -print0 | xargs -0 grep 'regexp' '。 –