2016-08-30 5 views
-1

私が反復処理しているディレクトリのファイルにgrepを使用している文字列が含まれている場合は、bashスクリプトで何かをしようとしています。問題は、ディレクトリ内のファイルのサブセットが名前にスペースを含む場合に発生します。したがって、私はsedを使用して所定の位置にエスケープスペースでスペースを置き換えるために試してみました:bashスクリプトのスペースをエコーする

if grep -c "main" ${source} | sed 's/ /\\ /g'; then 
    # do something 
fi 

しかし、私はまだエラーを取得:

grep: /Users/me/Desktop/theDir/nameWith: No such file or directory

grep: spaces.txt: No such file or directory

は私が間違って何をしているのですか?

+0

'grep -c'は空白を含む出力に何も表示しません。ヒント:数字です。おそらく 'grep -l'を意味していた – anishsane

+0

grepはファイルに' 'main" 'が含まれているかどうかをチェックするためのif条件です –

答えて

4

あなたはに読まれるされているファイルの名前を引用符で囲む必要があります。$sourceは、ファイルの名前であると仮定すると...

if grep -c main "$source" ; then 
    # do something 
fi 

を。ディレクトリの名前が$sourceの場合は、何をしようとしているかについての詳細情報が必要になります。

+0

ああ、OPが' sed'で何をしようとしているのか理解しました。私はOPが実際に 'sed'に' grep'出力を渡そうと思っていました – anishsane

+0

@anishsane私はまだOPが何をしようとしているか100%確信していませんが、私はこの提案から始めて、 :) – mwp

+1

はい、これは実際の問題の正しい解釈のようです。私はこの答えがOPの問題を解決すべきだと思う。 – anishsane

関連する問題