Bash grep выводит в дополнение к эхо в операторе if - PullRequest
1 голос
/ 22 марта 2019

У меня есть простой скрипт, который проверяет, используются ли изображения в нашем каталоге 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 Ответ

3 голосов
/ 22 марта 2019

Изменение:

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
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...