if [[ ${num1,,} =~ (quit|q|exit|x) ]]
정규 평등 이상 =~
의 특징은 오른쪽 표현은 확장 정규 표현식으로 해석된다는 것이다. (quit|q|exit|x)
또는 "Q"또는 "종료"또는 "X '를"종료 "일치하는 텍스트를 의미하는 이러한 표현이다. 특징 [[
및 =~
bash는 같은 고급 쉘을 필요로하는
가
주. 일반 /bin/sh
가 없을 수 있습니다 . 당신이 더 큰 호환하려면 이러한 기능
는 두 가지 방법이 있습니다 하나는 [
(테스트) 문을 사용합니다..
num1="$(echo $num1 | tr '[:upper:]' '[:lower:]')"
if [ "${num1}" = quit -o "${num1}" = q -o "${num1}" = exit -o "${num1}" = quit -o "${num1}" = x ]
우리가 간단한 평등 테스트로 제한되기 때문에 위의 표현은 더 이상 -o
입니다 " 또는 "연산자를 [
에 입력하십시오.
다른 옵션은 경우 문을 사용하여 위의 그림과 같이
num1="$(echo $num1 | tr '[:upper:]' '[:lower:]')"
case "${num1}" in
quit|q|exit|x)
echo ""
echo "Exiting `basename $0`, Goodbye!"
echo ""
exit 0
;;
esac
간단한 쉘의 ${var,,}
기능을 가지고 있지만하지 마십시오 tr
(번역) 유틸리티는 경우 변환을 할 수 있습니다.
위의 마지막 예에서 echo -e
을 세 개의 간단한 echo
문으로 대체했습니다. 이는 많은 쉘이 echo
에 대한 -e
옵션을 지원하지 않기 때문입니다.
이 목표를 달성하기 위해 시도한 것을 설명 할 수 있습니까? – JakeGould
무슨 뜻인가요? – user3101059
좋습니다. 긴 프로그램이지만, 기본적으로이 부분은 사용자가 번호를 입력하고 연산자를 입력 한 다음 다른 번호를 입력하면 계산이 가능합니다. 그러나 사용자가 언급 한 4 가지 옵션 중 하나를 입력하면 프로그램을 종료해야합니다. 따라서 그 조건이 참이라면 프로그램은 종료 된 후에 다시 종료해야합니다. 그렇지 않은 경우 계산으로 이동하십시오. 나는 그 조건을 이해할 필요가있다. – user3101059