Paste Search Dynamic
Recent pastes
Calendar -Input year and month
  1.  
  2.    month=(31 28 31 30 31 30 31 31 30 31 30 31) #각 달의 일수를 배열로 선언
  3.    p=1 #날짜를 요일칸에 맞추기 위한 변수
  4.    #month배열의 인덱스 값
  5.    min_month=1 #월 수는 1보다 작을수 없음
  6.    max_month=12 #월 수는 12보다 클수 없음
  7.    min_year=1900 #1900년도 이후 달력을 출력함
  8.  
  9.  
  10.    echo   "================================"
  11.    echo   "=========== Calendar ==========="
  12.    echo -n "Input year and month: "
  13.    read input_year input_month #사용자에게 보고싶은 년도와 월을 입력받음
  14.  
  15.       if [ $input_year -lt $min_year ] #사용자에게 입력받은 년도가 1900년보다 작은지 비교
  16.       then
  17.          break
  18.       elif [ $input_month -gt $max_month ] || [ $input_month -lt $min_month ] #사용자에게 입력받은 월이 1보다 작은지 12보다 큰지 비교
  19.       then
  20.          break
  21.       else
  22.          if [ `expr $input_year % 4` -eq 0 ] #사용자에게 입력받은 년도가 윤년인지 계산
  23.          then
  24.            if [ `expr $input_year % 400` -eq 0 ]
  25.            then
  26.                month[1]=29 #윤년이라면 2월달을 29일로 만들어줌
  27.            elif [ `expr $input_year % 100` -eq 0 ]
  28.            then
  29.                month[1]=28 #평년이라면 2월달을 28일로 만들어줌
  30.            else
  31.                month[1]=29
  32.            fi
  33.          else
  34.            month[1]=28
  35.          fi
  36.       echo "heer"
  37.         preyear=`expr $input_year - 1`
  38.         premonth=` expr $input_month - 1`
  39.         alldays=`expr $preyear \* 365 + \( $preyear / 4 - $preyear / 100 + $preyear / 400 \) `
  40.  
  41.         for ((i=0;i<` expr $input_month - 1`;i++));
  42.         do
  43.            echo "$i"
  44.            alldays=`expr $alldays + ${month[i]}`
  45.         done
  46.         echo "$alldays"
  47.       echo -e "\n"
  48.       echo "           $input_year    $input_month"
  49.       echo "Sun  Mon  Tue  Wed  Thu  Fri  Sat"
  50.       alldays=` expr $alldays + 1`
  51.       k=0
  52.       p=` expr $alldays % 7`
  53.       while [ $k -lt $p ] #날짜가 없는 요일에 공백을 넣어줌
  54.       do
  55.          echo  -n "     "
  56.          k=`expr $k + 1`
  57.       done
  58.       k=0 #반복문을 돌기때문에 초기화 해줌
  59.       while [ $k -lt ${month[`expr $input_month - 1`]} ] #k값이 각 달의 일수보다 작거나 같을 경우 반복
  60.       do
  61.          if [ $k -lt 9 ] #날짜가 두자리 수일 경우 날짜 칸을 맞추기 위함
  62.          then
  63.             echo  -n " `expr $k + 1`   " #날짜를 출력
  64.          else
  65.             echo  -n " `expr $k + 1`  "
  66.          fi
  67.          p=`expr $p + 1` #날짜를 요일 칸에 맞추기 위함
  68.          if [ $p -ge 7 ] #p값이 7보다 클 경우
  69.          then
  70.             echo -e "\n" #일주일이 지났으므로 다음주로 넘어감
  71.             p=0 #p값 초기화
  72.          fi
  73.          k=`expr $k + 1` #k값을 1씩 늘려주면서 날짜를 늘려줌
  74.       done
  75.       echo -e "\n"
  76.  
  77.       fi
Parsed in 0.049 seconds