다음 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 ]
# ^ ^ ^
괄호 주위에 공백이 필요하다는 의미입니다 . 그렇지 않으면 작동하지 않습니다. [
그 자체 가 명령 이기 때문 입니다.
이 같은보고되지 않은 이유 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
답변
프로그램 사이에 공간이 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