쉘 스크립트에서 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
   [..]

관련 정보