Bash grep输出以及if语句中的echo

时间:2019-03-22 02:56:01

标签: bash shell grep

我有一个简单的脚本,用于检查html目录中是否使用了图像。我有一个名为 imageserver.txt 的文件,该文件看起来像:

imageserver/icons/socialmedia/sqcolor_tumblr.png
imageserver/icons/socialmedia/sqcolor_gaf.png
imageserver/icons/socialmedia/sqcolor_yelp.png
imageserver/icons/socialmedia/sqcolor_linkedin.png
.....  

这是我的简单脚本

imageSearch.sh

#!/bin/bash

while IFS= read -r var
do

echo "\n ... Searching for $var \n"

if grep -rq $var /var/www/html; then

    echo "Image exists ...\n"
    echo $var >> doesExist.txt

else

    echo "Image does not exist ...\n"
    echo $var >> nonExists.txt

fi

done < ./imageserver.txt

现在,这很好用。我只想在if语句中添加一个元素。我希望echo >>不仅将$var打印到doesExist.txt,而且要在..中找到什么文件,我想我可能需要辅助文件grep内的if

我对doesExist.txt的期望输入如下:

imageserver/icons/socialmedia/sqcolor_tumblr.png  |  /var/www/html/file1.html
imageserver/icons/socialmedia/sqcolor_tumblr.png  |  /var/www/html/file2.html

我很困惑,不确定是否需要辅助grep或-是否可以从原始grep语句中的原始if获取文件名?

如何完成对doesExist.txt的输入

1 个答案:

答案 0 :(得分:3)

更改:

if grep -rq $var /var/www/html; then

    echo "Image exists ...\n"
    echo $var >> doesExist.txt

一些变化:

results=$(grep -rH "$var" /var/www/html)
if [ $? -eq 0 ]; then

    echo "Image exists ...\n"
    echo "$results" >> doesExist.txt
相关问题