파일에서 문자열을 검색하는 데 문제가 있습니다.

파일에서 문자열을 검색하는 데 문제가 있습니다.

"case" 루프를 사용해 보았지만 알 수 없는 이유로 작동하지 않습니다.

여기 내 케이스 루프 스크립트가 있습니다.

echo "Do you wish to search again? [y/n]"
read INPUT_STRING2
case $INPUT_STRING2
   y)
   ;;
   *)
   exit
   ;;

그런 다음 스크립트를 보다 사용자 친화적으로 만들려고 노력하는 동안 문제가 발생합니다. 문자열을 찾을 수 없지만 알아낼 수 없는 경우 스크립트가 사용자에게 알려주기를 원합니다. 운 없이 케이스 루프를 사용해 보았고 else 문을 사용해 보았지만 작동하지 않습니다.

if grep -q $STRING $FILE ; then
             echo "string found"
fi

이것은 부분적으로 작동하지만 내가 원하는 모든 것이 아닙니다.

답변1

in사례 설명과 결론에 ' '가 누락된 것 같습니다 esac.

echo "Do you wish to search again? [y/n]"
read INPUT_STRING2
case $INPUT_STRING2 in
   y)
   ;;
   *)
   exit
   ;;
esac

답변2

두 가지 구문 오류가 발생했습니다( in변수 뒤와 esacCase 문 끝에서).

echo "Do you wish to search again? [y/n]"
read INPUT_STRING2
case $INPUT_STRING2 in
   "y")
   echo "Searching again"
   ;;
   *)
   exit
   ;;
esac

답변3

문자열을 찾을 수 없는 경우 스크립트를 통해 사용자에게 알리고 싶습니다. 명령문을 사용하여 시도했지만 else성공하지 못했습니다.

무엇을 시도해 보셨나요?

if grep -q "$STRING" "$FILE"
then
        echo "string found"
else
        echo "string not found"
fi

일하다.

PS 나는 타당한 이유가 없고 자신이 무엇을 하고 있는지 확실히 알고 있지 않는 한 쉘 변수(예: "$INPUT_STRING2", "$STRING"및 ) 에 대한 모든 참조를 인용할 것을 권장합니다 . "$FILE"반대로 넌 그렇지 않지필요string found특수 문자가 포함되지 않은 경우 상수 문자열(예: )을 인용하십시오 . (대괄호 - "[" 그리고"]” - 이 경우 특수 문자.) 하지만 어쨌든 인용하는 것이 좋습니다.

관련 정보