web-dev-qa-db-ja.com

検索/ grep検索結果での改行の保持

次のスクリプトを使用して、他のファイルから呼び出されているphpスクリプトの出現を再帰的に検索しています。

find . -exec grep -Hn $1 {} \; | grep -v ^Binary;

よく働く!ここで、次に実行するアクションを決定するために、返された結果が必要です。

r=$(find . -exec grep -Hn $str {} \; | grep -v ^Binary;)

 if [ -z "$r" ];
    then
          Do this
    else
          Do something else
    fi

問題:それ自体で、findスクリプトは結果をそれぞれ新しい行に返します。

./path/to/file.php
./path/to/another_file.php
./path/to/third_file.php

ただし、出力を$ r変数に割り当てる場合、改行文字は保持されず、結果は1行に出力されるため、読みにくくなります。

./path/to/file.php ./path/to/file.php ./path/to/third_file.php

出力を変数に割り当てるときに改行文字を保持するにはどうすればよいですか?

5
pfmasse60

$rで何をしているのかはわかりませんが、きっとそうです

echo $r

改行を保持するには、変数を二重引用符で囲む必要があります

echo "$r"

引用符で囲まれていない場合、変数は 単語分割 の対象となります。ここで、空白のシーケンスはすべて 1 (改行を含む)は単一のスペースに置き換えられます 1

1:デフォルトでは、$IFSの内容によって異なります(デフォルト:スペース、タブ、改行)

9
glenn jackman