首页 > 解决方案 > Bash grep 输出以及 if 语句中的 echo

问题描述

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
.....  

这是我的简单脚本

图像搜索.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 >>不仅打印$vardoesExist.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

标签: bashshellgrep

解决方案


改变:

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

推荐阅读