완벽하게 작동하는 2개의 bash 스니펫이 있습니다.
MODE=a;while [[ !("${MODE}" =~ ^[0-9]+$) ]];do read -p 'mode?' MODE;done
그리고
MODE=a;while [[ "${MODE}" != 'b' ]]; do read -p 'mode?' MODE;done
저는 이 두 가지 조건을 결합하고 싶습니다. 나는 이 게시물의 조언을 따르려고 노력했습니다(while 루프의 여러 조건). 하지만 나에게는 작동하지 않습니다.
# -o 연산자를 사용한 단일 POSIX 테스트 명령:
MODE=a;while [ !("${MODE}" =~ ^[0-9]+$) -o "${MODE}" != 'b' ];do read -p 'mode?' MODE;done
#2 POSIX 테스트 명령은 ||를 사용하여 목록으로 연결됩니다.
MODE=a;while [ !("${MODE}" =~ ^[0-9]+$) ] || [ "${MODE}" != 'b' ]; do read -p 'mode?' MODE;done
#2 BASH 조건식||연산자:
MODE=a;while [[ !("${MODE}" =~ ^[0-9]+$) ]] || [[ "${MODE}" != 'b' ]]; do read -p 'mode?' MODE;done
#2 BASH 산술 표현식은 ||를 사용하여 목록으로 연결됩니다.
MODE=a;while (( !("${MODE}" =~ ^[0-9]+$) )) || (( "${MODE}" != 'b' )); do read -p 'mode?' MODE;done
# ||를 사용하는 단일 BASH 산술 표현식 연산자:
MODE=a;while (( !("${MODE}" =~ ^[0-9]+$) || "${MODE}" != 'b' )); do read -p 'mode?' MODE;done
다들 감사 해요! !
답변1
고마워요 고든!
MODE=a;while [[ !("${MODE}" =~ ^[0-9]+$) ]] && [[ "${MODE}" != 'b' ]]; do read -p 'mode?' MODE;done