while 루프의 여러 조건

while 루프의 여러 조건

완벽하게 작동하는 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

관련 정보