2011-01-28 14 views
0

私はディレクトリツリーを通してgrepを行い、grep出力のパスを保存できるシェルスクリプトを作成しました。スクリプトコマンドへのBash引数の一重引用符の保存(再構築?)

#!/bin/bash 
# findjs.sh 
# Given a word or argument, greps javascript files from one dir down to the 8th dir down, 
# as in: */*.js */*/*.js ... */*/*/*/*/*/*.js 

f="*/*.js" 
for p in {1..8} 
do 
    echo 'Searching '"$f" 
    grep -in $1 $f; 
    f="*/"$f 
done 

は非常によく動作します: それはこのように始まりました。問題は、検索語として複数単語の文字列を送信したい場合です。これはOKです:

./findjs.sh aword /var/local/somedir 

これではありません。

./findjs.sh 'the message' /var/local/somedir 

バッシュは、私が試してみて、単一引用符で$ 1ラップするあらゆる種類のものを試してみました

grep -in the message /var/local/somedir 

にはgrepラインをデボルブ は次のとおりです。

escaped="'\''" 
t=$escaped$1$escaped 

または

grep -in $escaped$1$escaped $fp; 

と単一引用符、二重引用符で、などなどが、単一引用符は毎回消えます。

私には何が欠けていますか?

答えて

1
grep "$1" ... 

は...

+0

をうまく動作するはずですそしてそうそれはありません。明らかに、明らかに逃した。 –

関連する問題