Використання 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чи пробіли у назві файлу.
Ángel

0

Ви з'ясували свою пропущену ще одну гілку, але одну пропозицію:

замість того, щоб $input_string $input_string1спробувати ${input_string} ${input_string1}просто переконатися, що за вами не $input_stringпіде 1.


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