Programing

Bash에서 elif, else 문이 있으면

lottogame 2020. 3. 9. 07:59
반응형

Bash에서 elif, else 문이 있으면


나는 다음의 문제 무엇인지 제대로 작동 할 수없는 if문이에 관해서에 elifthen. printf아직 개발 중이라는 것을 명심하십시오. 나는 아직 진술에서 테스트 할 수 없었으므로 잘못되었을 가능성이 큽니다.

내가 얻는 오류는 다음과 같습니다.

./timezone_string.sh: line 14: syntax error near unexpected token `then'
./timezone_string.sh: line 14: `then'

그리고 그 진술은 그렇습니다.

if [ "$seconds" -eq 0 ];then
   $timezone_string="Z"
elif[ "$seconds" -gt 0 ]
then
   $timezone_string=`printf "%02d:%02d" $seconds/3600 ($seconds/60)%60`
else
   echo "Unknown parameter"
fi

elif사이에 공백이 없습니다 [.

elif[ "$seconds" -gt 0 ]

해야한다

elif [ "$seconds" -gt 0 ]

이 질문이 많은 견해를 얻고 있음을 알 때 따라야 할 구문은 다음과 같습니다.

if [ conditions ]
# ^ ^          ^

괄호 주위에 공백이 필요하다는 의미입니다 . 그렇지 않으면 작동하지 않습니다. [그 자체 명령 이기 때문 입니다.

이 같은보고되지 않은 이유 elif[: command not found(유사한 또는)보고 후 것입니다 if그리고 then, 쉘이 중 하나를 찾고 elif, else또는 fi. 그러나 다른 then형식을 찾습니다 (잘못 형식화 된 후 elif[). 명령문을 구문 분석 한 후에명령문이 실행됩니다 (오류 메시지 elif[: command not found가 출력됩니다).


스크립트에 구문 문제가 있습니다. 고정 버전은 다음과 같습니다.

#!/bin/bash

if [ "$seconds" -eq 0 ]; then
   timezone_string="Z"
elif [ "$seconds" -gt 0 ]; then
   timezone_string=$(printf "%02d:%02d" $((seconds/3600)) $(((seconds / 60) % 60)))
else
   echo "Unknown parameter"
fi

[명령입니다. 앞의 문장에서 공백으로 구분해야합니다.

elif [

bash에서 컨디셔닝의 기본 사항을 살펴 보는 것이 좋습니다.

"[" 기호 는 명령이며 그 앞에 공백이 있어야합니다. elif 뒤에 공백을 제공하지 않으면 시스템은 elif [를 현재 원하는 것이 아닌 특정 명령으로 해석 합니다.

용법:

elif(A COMPULSORY WHITESPACE WITHOUT PARENTHESIS)[(A WHITE SPACE WITHOUT PARENTHESIS)conditions(A WHITESPACE WITHOUT PARENTHESIS)]

간단히 말해서 코드 세그먼트를 편집하여 다음을 수행하십시오.

elif [ "$seconds" -gt 0 ]

컴파일 오류없이 괜찮을 것입니다. 최종 코드 세그먼트는 다음과 같아야합니다.

#!/bin/sh    
if [ "$seconds" -eq 0 ];then
       $timezone_string="Z"
    elif [ "$seconds" -gt 0 ]
    then
       $timezone_string=`printf "%02d:%02d" $seconds/3600 ($seconds/60)%60`
    else
       echo "Unknown parameter"
    fi

참고 URL : https://stackoverflow.com/questions/16034749/if-elif-else-statement-issues-in-bash

반응형