if-else 문에서 grep 사용하기


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
당신은 어떻게 될 것으로 예상합니까?
Patrick

입력 한 문자열은 파일에서 문자열을 찾고 해당 문자열이 있는지 나타냅니다. 이제 다른 코드를 입력해야한다는 것을 깨달았습니다. 감사합니다
Adam Poyser

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
방금이 코드를 사용해 보았으며 감사합니다! 나는 내 모든 문제가 else 선언이 없다는 것을 몰랐다. 빠른 답변 주셔서 감사합니다
Adam Poyser

2
grep 매개 변수를 인용해야합니다. 검색 문자열에을 포함 -v하거나 파일 이름에 공백 이 있으면 어떻게 될지 생각해보십시오 .
Ángel

0

누락 된 else-branch를 알아 냈지만 한 가지 제안은 다음과 같습니다.

$input_string $input_string1try 를 사용하는 대신 1을 따르지 ${input_string} ${input_string1}않도록하십시오 $input_string.


아니요, 제안 된 교체는 원본과 정확히 동일합니다. $input_string1변수의 값입니다 input_string1(따옴표로 묶지 않았기 때문에 쪼개지고 globbed 됨) input_string. 변수와 관련이 없습니다 .
Gilles 'SO- 악마 그만'
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.