programing

if, ellif, else 문 문제가 Bash에 있습니다.

closeapi 2023. 5. 6. 14:59
반응형

if, ellif, else 문 문제가 Bash에 있습니다.

다음의 문제가 무엇인지 알 수 없는 것 같습니다.if진술은 에 관한 것입니다.elif그리고.then다음 사항을 염두에 두십시오.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 ]; then
   # Things
elif [ other_conditions ]; then
   # Other things
else
   # In case none of the above occurs
fi

이 질문은 많은 사람들의 의견을 얻고 있기 때문에 다음 구문을 따라야 한다는 것을 나타내는 것이 중요합니다.

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에서 컨디셔닝의 기초를 보는 것을 추천합니다.

"["] 기호는 명령이며 명령 앞에는 공백이 있어야 합니다.ellif 뒤에 공백을 지정하지 않으면 시스템은 ellif[를 특정 명령으로 해석합니다. 이 명령은 현재 사용자가 원하는 것이 아닙니다.

용도:

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

사이에 공백이 없음elif그리고.[나머지는 당신의 프로그램이 정확합니다.당신은 그것을 수정하고 확인해야 합니다.다음은 고정 프로그램입니다.

#!/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

이 bash if if 문과 관련된 유용한 링크

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

반응형