"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
변수 뒤와 esac
Case 문 끝에서).
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
특수 문자가 포함되지 않은 경우 상수 문자열(예: )을 인용하십시오 . (대괄호 - "[
" 그리고"]
” - 이 경우 특수 문자.) 하지만 어쨌든 인용하는 것이 좋습니다.