쉘 스크립트에서 grep 및 if 문 사용

쉘 스크립트에서 grep 및 if 문 사용

파일에서 문자열을 검색하고 싶은데, 이 웹사이트를 많이 검색한 후에 결국 grepin 및 if문을 사용하게 되었습니다. 그러나 다른 관련 게시물에서 찾은 지침을 모두 따랐음에도 불구하고 예상대로 작동하지 않습니다. 여기 내 코드가 있습니다.

echo "Enter dicounter number"
read string1
echo "Enter side with LEDs"
read string2

if grep -q "dicounter_$string1_from_$string2" MasterFile.txt; then
   echo "dicounter_$string1_from$string2 already exists in MasterFile."
else
   { (a bunch of stuff to make the transmitter operate) }
fi

제가 생각하는 주요 문제는 명령줄 인수를 읽는 방식에 있습니다.

답변1

스크립트가 예상대로 작동하지 않는 경우 가장 먼저 시도해 볼 수 있는 작업 중 하나는 set -x코드에서 문제가 있는 부분(이 경우에는 grep) 앞에 추가하고 스크립트를 실행하는 것입니다. 그러면 스크립트가 무엇인지 알 수 있습니다.실제로당신이 하는 일과 비교할 수 있도록예상하다하고 있는 것입니다.

귀하의 경우 문제는 변수 이름에 유효한 문자가 있어서 예상한 대로 _값을 사용하려고 시도하는 것일 수 있습니다. 이것이 바로 화려한 조작을 사용하지 않더라도 변수 이름을 중괄호로 묶는 것이 좋은 습관인 이유입니다. 예를 들어:$string1_from_$string1

if grep -q "dicounter_${string1}_from_${string2}" MasterFile.txt; then
   echo "dicounter_${string1}_from${string2} already exists in MasterFile."
else
   [..]

관련 정보