Использование grep в операторе if-else [закрыто]


10

Почему мой код не выводится, если введенная строка отсутствует в файле. Когда я ввожу строку, а ее нет в файле, ответ не возвращается, он возвращается к началу. Может кто-нибудь сказать мне, что не так с моим кодом?

while :
do
echo "Please enter a string"
read input_string
echo "Please enter the file name too see if that string is present in it - (Enter .abw after)"
read input_string1
if grep -q $input_string $input_string1 ; then
echo  "Your string has been found"
fi
done

3
Чего вы ожидаете?
Патрик

Он должен был сказать, что строка, которую вы вводите, ищет ее в файле и говорит, присутствует ли эта строка. Теперь я понял, что мне нужно ввести другой бит кода для другого. Спасибо
Адам Пойсер,

input_stringкстати, на самом деле не говорящее имя переменной :)
Marian

Ответы:


10
while :
 do
     echo "Please enter a string"
     read input_string
     echo "Please enter the file name too see if that string is present in it - (Enter .abw after)"
     read input_string1
     grep -q "${input_string}" "${input_string1}"                                                                 
     if [ $? -eq 0 ] ; then
         echo  "Your string has been found"
     else 
         echo "Your string has not been found"
     fi
 done

1
Я только что попробовал этот код, и он работает, спасибо! Я не понимал, что вся моя проблема была в том, что я не имел другого заявления. Спасибо за быстрый ответ
Адам Пойсер,

2
Вам нужно указать параметры grep. Подумайте, что произойдет, если моя строка поиска будет содержать -vили в имени файла будут пробелы.
Анхель

0

Вы выяснили свою недостающую ветку else, но есть одно предложение:

вместо использования $input_string $input_string1попробуйте ${input_string} ${input_string1}просто убедиться, что вы не получите $input_string1.


Нет, предложенная вами замена в точности соответствует оригиналу. $input_string1это значение переменной input_string1(split и globbed, поскольку оно не заключено в кавычки), оно не включает переменную input_string.
Жиль "ТАК - перестать быть злым"
Используя наш сайт, вы подтверждаете, что прочитали и поняли нашу Политику в отношении файлов cookie и Политику конфиденциальности.
Licensed under cc by-sa 3.0 with attribution required.