반응형

     정보

    • 업무명     : Shell Script를 이용한 Bingo 함수 버전, 재귀 처리, 숫자 야구

    • 작성자     : 이상호

    • 작성일     : 2020-10-18

    • 설   명      :

    • 수정이력 :

     

     내용

    [개요]

    • 안녕하세요? 웹 개발 및 연구 개발을 담당하고 있는 해솔입니다.

    • 다년간 축적된 경험 (기상학 학술 보고서 및 국/영문 학술 논문 게재, 블로그 운영, IT 회사 웹 개발 담당) 및 노하우를 바탕으로 개개인에게 맞춤형 솔루션을 수행할 수 있습니다.

    • 특히 재능 플랫폼 (크몽, 오투잡, 해피캠퍼스, 레포트 월드)에서 누구보다도 경쟁력 있는 가격으로 양질의 서비스를 제공하고 있습니다.

      • 아스키 형식의 텍스트 (text) 파일부터 과학자료 형식 (HDF, H5, NetCDF, Grib, Grb) 및 Data Base (DB) 자료까지 다양한 형태의 자료를 이용하여 수집, 전처리, 분석, 시각화해 드립니다.

      • 또한 웹 사이트에 대한 정보를 이용한 웹 크롤링 및 그에 따른 엑셀 및 DB 구축도 가능합니다.

      • 아울러 기초 통계 (빈도분포, Prired t-test, Wilcoxn 등)에서 지도/비지도 학습을 통한 회귀모형 구축에 이르기 까지 효율적인 통계 정보를 제공합니다.

      • 최근 대한민국의 후속위성인 천리안위성 2A호 웹 서비스 서브시스템 및 환경위성 2B호 통합 자료처리 서브시스템에 대한 웹 개발을 수행하였습니다.

    • 그리고 해솔 블로그에서는 다양한 기상학/천문학 정보와 더불어 사무 자동화/프로그래밍 언어를 소개하오니 방문 부탁드립니다.

    • 좋은 하루 보내세요.

     

     

    [재능플랫폼] 오투잡

     

    [IT개발 - 응용프로그래밍] 통계 분석, 데이터 분석, 시각화를 성실하게 해 드립니다. - 재능마켓 �

    판매가격:10,000원, [소개] - 데이터산업진흥원 데이터 가공 공급기업 선정 - 정보통신산업 진흥원 데이터 가공 공급기업 선정 - 다년간 축적된 경험 노하우를 바탕으로 개개인에게 맞춤형 솔루션�

    www.otwojob.com

     

    [재능플랫폼] 크몽

     

    데이터수집, 파싱, 크롤링 해 드립니다. | 50,000원부터 시작 가능한 총 평점 0점의 IT·프로그래밍,

    0개 총 작업 개수 완료한 총 평점 0점인 shlee1990의 IT·프로그래밍, 데이터분석·리포트, 데이터 마이닝·크롤링 서비스를 0개의 리뷰와 함께 확인해 보세요. IT·프로그래밍, 데이터분석·리포트, 데

    kmong.com

     

     요청

    [세부 사항]

    • 과제6: Bingo - 함수 버전

    • 연습과제: 재귀적 destroy를 응용하여 지정된 디렉토리 아래에 있는 전체 파일들 개수를 출력하는 스크립트를 짠다 (지정된 디렉토리는 week10).

    • 숫자 야구

      • 조건 : 0 or 1의 임의 난수를 계속 생성하고, 키보드 입력으로부터 0.1의 숫자를 입력받아 일치하면 "Strike" 아니면 Ball를 출력

      • Strike or Ball 여부를 키보드로부터 입력받은 수를 인수로 하여 함수 실행

      • 종료조건 3 Strike 라면 Out, 4 Ball일시 Win 출력시키고 프로그램을 종료한다.

     

     완료

    [사용 OS]

    • Linux (CentOS v7.3)

     

    [사용 언어]

    • Shell Script

     

    [명세]

    • Bingo 함수

      • read를 통해 argsInputVal 입력 받기

      • 해당 입력 파라미터를 통해 함수 (fnBingo) 실행 

    #!/bin/bash
    
    #========================================================
    #  Bingo 함수 버전
    #========================================================
    fnArgsNumberValid() {
    
       local argsVal=$1
    
       if [ $argsVal -lt 1 ]; then
          echo "Lower than"
    
          return 0
       fi
    
       if [ $argsVal -gt 1 ]; then
          echo "Higher than"
    
          return 0
       fi
    
       echo "Bingo!"
    
       return 1
    }
    
    fnBingo() {
    
       local argsNumber=$#
       if [ $argsNumber -ne 1 ]; then
          echo "args is Null"
    
          exit 1
       fi
       
       local argsVal=$1
    
       while : 
       do 
          fnArgsNumberValid $argsVal
          local result=$?
    
          # echo $result      
    
          if [ $result -eq 1 ]; then
             break
          fi
    
          read argsInputVal
          fnBingo $argsInputVal
       done
    
       exit 0
    }
    
    # read argsInputVal
    # fnBingo $argsInputVal

     

    • 재귀적 destroy

    #==========================================================
    #  재귀적 destroy 이용
    #==========================================================
    destroy1() {
       local argsNumber=$#
       if [ $argsNumber -ne 1 ]; then
          echo "args is Null"
    
          exit 1
       fi
       
       local argsVal=$1
    
       if [ -d $argsVal ]; then
          local list=$(ls $argsVal/*)
    
          for file in $list
          do
             ((num = $num + 1))
       
             # echo $file $num
          done
    
          echo $num
       fi
    }
    
    # num=0
    # source=./week10
    
    # destroy1 $source

     

    • 숫자 야구

    #==========================================================
    #  숫자 야구
    #==========================================================
    fnBaseBallGame() {
    
       local argsNumber=$#
       if [ $argsNumber -ne 1 ]; then
          echo "args is Null"
    
          exit 1
       fi
       
       local argsVal=$1
    
       while : 
       do 
          randomNum=$((RANDOM%2))
    
          if [ $argsVal -eq 0 ] || [ $argsVal -eq 1 ]; then
             if [ $randomNum -eq $argsVal ]; then
                echo "Strike"
                iStrikeCount=$(($iStrikeCount + 1))
             else
                echo "Ball"
                iBallCount=$(($iBallCount + 1))
             fi
          fi
    
          # echo $randomNum $argsInputNum $iStrikeCount $iBallCount
    
          if [ $iStrikeCount -eq 3 ]; then
             echo "Out"
             break
          fi
    
          if [ $iBallCount -eq 4 ]; then
             echo "Win"
             break
          fi
    
          read argsInputVal
          fnBaseBallGame $argsInputVal
       done
    
       exit 0
    }
    
    iStrikeCount=0
    iBallCount=0
    read argsInputVal
    
    fnBaseBallGame $argsInputVal

     

    [소스 코드]

    #!/bin/bash
    
    #========================================================
    #  Bingo 함수 버전
    #========================================================
    fnArgsNumberValid() {
    
       local argsVal=$1
    
       if [ $argsVal -lt 1 ]; then
          echo "Lower than"
    
          return 0
       fi
    
       if [ $argsVal -gt 1 ]; then
          echo "Higher than"
    
          return 0
       fi
    
       echo "Bingo!"
    
       return 1
    }
    
    fnBingo() {
    
       local argsNumber=$#
       if [ $argsNumber -ne 1 ]; then
          echo "args is Null"
    
          exit 1
       fi
       
       local argsVal=$1
    
       while : 
       do 
          fnArgsNumberValid $argsVal
          local result=$?
    
          # echo $result      
    
          if [ $result -eq 1 ]; then
             break
          fi
    
          read argsInputVal
          fnBingo $argsInputVal
       done
    
       exit 0
    }
    
    # read argsInputVal
    # fnBingo $argsInputVal
    
    
    #==========================================================
    #  재귀적 destroy 이용
    #==========================================================
    destroy1() {
       local argsNumber=$#
       if [ $argsNumber -ne 1 ]; then
          echo "args is Null"
    
          exit 1
       fi
       
       local argsVal=$1
    
       if [ -d $argsVal ]; then
          local list=$(ls $argsVal/*)
    
          for file in $list
          do
             ((num = $num + 1))
       
             # echo $file $num
          done
    
          echo $num
       fi
    }
    
    # num=0
    # source=./week10
    
    # destroy1 $source
    
    #==========================================================
    #  숫자 야구
    #==========================================================
    fnBaseBallGame() {
    
       local argsNumber=$#
       if [ $argsNumber -ne 1 ]; then
          echo "args is Null"
    
          exit 1
       fi
       
       local argsVal=$1
    
       while : 
       do 
          randomNum=$((RANDOM%2))
    
          if [ $argsVal -eq 0 ] || [ $argsVal -eq 1 ]; then
             if [ $randomNum -eq $argsVal ]; then
                echo "Strike"
                iStrikeCount=$(($iStrikeCount + 1))
             else
                echo "Ball"
                iBallCount=$(($iBallCount + 1))
             fi
          fi
    
          # echo $randomNum $argsInputNum $iStrikeCount $iBallCount
    
          if [ $iStrikeCount -eq 3 ]; then
             echo "Out"
             break
          fi
    
          if [ $iBallCount -eq 4 ]; then
             echo "Win"
             break
          fi
    
          read argsInputVal
          fnBaseBallGame $argsInputVal
       done
    
       exit 0
    }
    
    iStrikeCount=0
    iBallCount=0
    read argsInputVal
    
    fnBaseBallGame $argsInputVal

     

    [결과물]

    • 결과 보고서

     

     

     

     

     참고 문헌

    [논문]

    • 없음

    [보고서]

    • 없음

    [URL]

    • 없음

     

     문의사항

    [기상학/프로그래밍 언어]

    • sangho.lee.1990@gmail.com

    [해양학/천문학/빅데이터]

    • saimang0804@gmail.com

     

    반응형
    • 네이버 블러그 공유하기
    • 네이버 밴드에 공유하기
    • 페이스북 공유하기
    • 카카오스토리 공유하기