在 find/grep 搜索结果中保留换行符

在 find/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

问题:查找脚本本身会返回结果,每个结果都在一个新行上。

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

但是,将输出分配给 $r 变量时,换行符不会被保留,并且结果会打印在一行上,从而难以阅读。

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

将输出分配到变量时如何保留换行符?

答案1

你没有展示你用什么$r,但我敢打赌

echo $r

您需要将变量括在双引号中以保留换行符

echo "$r"

不带引号时,变量受单词拆分,其中任何空格1序列(包括换行符)均被替换为单个空格1

1:默认情况下,取决于内容$IFS(默认:空格、制表符、换行符)

相关内容