쉘 스크립트 연산식 질문드립니다 (내용 간단해요!)
글쓴이: kungfumong / 작성시간: 토, 2016/10/15 - 8:40오후
allday=((year-1)+(year-1)/4-(year-1)/100+(year-1)/400); if(i==1 && ((year%4==0 && year%100 !=0) || year%400==0))
allday=`expr (($year-1)+($year-1)/4-($year-1)/100+($year-1)/400)` if [ $i -eq 1 -a (`expr ($year % 4 -eq 0 -a $year % 100 -ne 0)` || `expr $year % 400 -eq 0))` ]
위에가 원래 수식이고
아래가 제가 작성한 쉘스크립트 소스입니다.
에러가 나는데 뭐가 틀린지 모르겠네요...
쉘 스크립트 연산식 쓰는거 정말 불편한데 변환기 이런건 없을까요?
Forums:
일단, if 문은 에러가 나겠네요. 비교문에서 "||
일단, if 문은 에러가 나겠네요. 비교문에서 "||"를 사용하려면 독립된 bracket을 사용해야 합니다. 아니면 "-o" 옵션을 사용하든지요. 그리고 backtick operator와 괄호 묶음도 잘못 되어 있네요.
예를 들면
또는
와 같이 되어야 합니다. 또는 C 처럼 사용하려면 [] 대신에 (())를 이용할 수 있습니다.
bash에서 수식 연산은 $(( ... )) 또는 $[ .. ] 를 이용하시면 됩니다.
그리고 비교문을 C 처럼 사용하려면 [] 대신 (())를 사용하실 수 있습니다.
위의 설명은 일단 bash 4 기준으로 설명을 드린 것입니다.
bash 문법 자체에 어려움이 있으신 것 같은데, 기본적으로 프로그래밍이 가능하시니, https://mug896.gitbooks.io/shell-script/content/ 문서 전체를 한번 읽어 보시는 것을 권장 드립니다. 그리 긴 문서는 아니니 한번 읽어 보시고 스크립트를 작성하시는 것이 훨씬 진도가 빠를 듯 싶습니다. :-)
감사합니다!!
알려주신대로 수정했는데
27, 35, 39, 43 , 73 번 행에서 에러가 나네요
27,35행이면 알려주신 연산식인데 뭐가 잘못된걸까요 ㅠ
일단, 34라인
일단, 34라인
가 문법 에러 입니다. expr은 수식인데, 수식 안에서 "-ge"로 비교를 하고 있으니 에러지요.
이렇게 되어야 겠지요. 그리고 비교문 뒤에 'then' 키워드도 빠졌고요.
그리고 기본적으로 문법 오류가 너무 많습니다.
예를 들어
이런 것들..
이렇게 되어야 하죠. 좀 고쳐 보려다 오류가 너무 많아서 .. :-)
제가 읽어 보라고 한 문서를 한번 정독 해 주시고 다시 작성 하시는 것이 도움이 될 듯 싶습니다.
감사합니다! 많은 도움이 되었습니다.
감사합니다! 많은 도움이 되었습니다.
댓글 달기