요일 확인

 

안녕하세요, MJ 입니다.
 
날짜를 입력하여 요일을 확인하는 스크립트 입니다.
이전에 bash, batch, powershell 용 스크립트를 함께 포스팅 했었는데
bash 스크립트 목록을 작성한 기념으로 사용방법을 추가하여 다시 올려봅니다.

(사용방법)

1. bash 에서 파일을 만들고, 스크립트 내용을 붙여넣습니다.

[root]# vi  /usr/local/bin/whatday
(소문자 i 를 한번 누른다)
아래 스크립트 내용을 "붙여넣기" 한다.
"ESC" 를 한번 누른다.
":wq" 를 입력하고 엔터를 치면, 파일이 저장되고 프롬프트로 나가진다.

2. 만든 파일에 CR 이 있지 않은지 확인한다.

[root]# file /usr/local/bin/whatday
>엔터를 쳤을 때, CR 이라는 문자가 포함된 로그가 확인된다면, 캐리지리턴 문자가 포함되어있는것으로 리눅스에서 스크립트를 정상실행시킬 수 없으므로 다음을 수행합니다.
[root]# dos2unix /usr/local/bin/whatday
> 이렇게 해서 캐리지리턴을 제거합니다.
dos2unix 명령어가 없는 경우 yum install dos2unix 를 수행하여 설치합니다.

3. 생성 한 파일에 실행 권한을 설정한다.

[root]# chmod 755 /usr/local/bin/whatday

4. 이제부터 whatday 명령어를 사용 할 수 있게 되었다.

"실행"
[root]# whayday 2024-09-15
Sun
 
문의사항은 댓글을 달아 주시면 성심껏 답변 드리겠습니다.

감사합니다.
  

[bash - 요일 확인]

#!/bin/bash
 
if [ ${#} -ne 1 ] && [ ${#} -ne 0 ];then
    echo "Usage: ${0} yyyy-mm-dd"
    exit 1
fi

if [ ${#} -eq 1 ];then
    INPUT=${1}
elif [ ${#} -eq 0 ];then
    echo -n "please input date (format: yyyy-mm-dd): "
    read INPUT
fi

wrong_bit=0
tmp_y=$(expr substr $INPUT 1 4)
tmp_m=$(expr substr $INPUT 6 2)
tmp_d=$(expr substr $INPUT 9 2)
seq $tmp_y $tmp_y &> /dev/null
if [ $? -ne 0 ];then
    wrong_bit=$(expr ${wrong_bit} + 4)
fi
seq $tmp_m $tmp_m &> /dev/null
if [ $? -ne 0 ];then
    wrong_bit=$(expr ${wrong_bit} + 2)
fi
seq $tmp_d $tmp_d &> /dev/null
if [ $? -ne 0 ];then
    wrong_bit=$(expr ${wrong_bit} + 1)
fi
if [ ${wrong_bit} -ne 0 ];then
    if   [ ${wrong_bit} -eq 7 ];then
        echo 'Wrong Your Input Number of Year, Month, Day.'
    elif [ ${wrong_bit} -eq 6 ];then
        echo 'Wrong Your Input Number of Year, Month.'
    elif [ ${wrong_bit} -eq 5 ];then
        echo 'Wrong Your Input Number of Year, Day.'
    elif [ ${wrong_bit} -eq 4 ];then
        echo 'Wrong Your Input Number of Year.'
    elif [ ${wrong_bit} -eq 3 ];then
        echo 'Wrong Your Input Number of Month, Day.'
    elif [ ${wrong_bit} -eq 2 ];then
        echo 'Wrong Your Input Number of Month.'
    elif [ ${wrong_bit} -eq 1 ];then
        echo 'Wrong Your Input Number of Day.'
    fi
    exit 1
fi

 
getDay()
{
yy=$(expr substr $1 1 4)
mm=$(expr substr $1 6 2)
dd=$(expr substr $1 9 2)
if [ $mm = "01" ] || [ $mm = "02" ]; then
yy=$(expr $yy - 1)
mm=$(expr $mm + 12)
fi
yC=$(expr $yy / 100)
yY=$(expr $yy % 100)
 
# 제라의 요일 공식
num=$(echo $1 | awk '{ printf("%d", ((21*'$yC'/4)+(5*'$yY'/4)+(26*('$mm'+1)/10)+'$dd'-1) % 7); }')
 
case $num in
0) echo 'Sun' ;;
1) echo 'Mon' ;;
2) echo 'Tue' ;;
3) echo 'Wed' ;;
4) echo 'Thu' ;;
5) echo 'Fri' ;;
6) echo 'Sat' ;;
esac
}
getDay ${INPUT}


댓글 없음:

댓글 쓰기

내 리눅스 서버, 대체 뭐가 문제야?

내 리눅스 서버, 대체 뭐가 문제야? 안녕하세요. 오늘은 리눅스 서버가 버벅거릴 때, 원인을 파악하는 방법에 대해 알아보려고 해요. 서버의 성능 저하 원인을 찾는 것은 시스템 관리에서 매우 중요한 부분이에요. CPU, 메모리 사용량부터 수상한 프로...

가장 많이 본 글