>

기본적으로 스크립트는 다음과 같습니다.

echo -n "Guess my number: "
read guess
while [ $guess != 5 ]; do
echo Your answer is $guess. This is incorrect. Please try again.
echo -n "What is your guess? "
read guess
done
echo "That's correct! The answer was $guess!"

변경하고 싶은 것은이 줄입니다 :

while [ $guess != 5 ]; do

다음과 같이 :

while [ $guess != 5 and $guess != 10 ]; do

Java에서 "and"는 "&&"이지만 여기서 작동하지 않는 것 같습니다. while 루프를 사용하여 올바른 방법으로 진행합니까?

  • 답변 # 1

    와이즈 비즈  bash의 연산자는 [] 에 대한 호출의 구문 설탕입니다. test 에 문서화되어 있습니다. . "또는"은 접두사 man test 로 표시됩니다. 하지만 "and"가 필요합니다 :

    -o
    
    

  • 답변 # 2

    원하는 것을 달성하기위한 2 가지 정확하고 이식 가능한 방법이 있습니다.
    좋은 오래된 while [ $guess != 5 -a $guess != 10 ]; do  구문 :

    shell
    
    

    그리고 while [ "$guess" != 5 ] && [ "$guess" != 10 ]; do  구문 (지정한대로) :

    bash
    
    

  • 답변 # 3

    휴대하고 강력한 방법은 while [[ "$guess" != 5 && "$guess" != 10 ]]; do 를 사용하는 것입니다  대신 진술. 익숙하지 않은 경우 구문을 둘러싼 머리를 감쌀 수 있습니다.

    case
    
    

    while true; do case $guess in 5 | 10) break ;; esac echo Your answer is $guess. This is incorrect. Please try again. echo -n "What is your guess? " read guess # not $guess done 를 사용했습니다  그러나 당신은 실제로 while true 를 사용할 수 있습니다  거기에 직접 진술하십시오. 그래도 읽고 유지 관리하는 데 어려움이 있습니다.

    case
    
    
    while case $guess in 5 | 10) false;; *) true;; esac; do ...

관련 자료

  • 이전 php - 더 깊은 디렉토리에서 중앙 헤더 유지
  • 다음 node.js - 반응 - 런타임 대신 컴파일/빌드 시간에 node_modules 패키지를 실행하는 방법은 무엇입니까?