Linux Shell 순환 에서 보 여 주 는 진도 백분율 의 실현 방법

2066 단어 LinuxShell진도
Shell 순환 에서 진행 백분율 을 보 여 주 는 스 크 립 트 방법
내 가 몇 만 줄 의 서 류 를 처리 해 야 할 때 처리 해 야 할 시간 은 비교적 길다.내 가 처음에 생각 한 것 은 한 줄 도 처리 하지 않 고\#번 호 를 출력 하 는 것 이다.하지만 이렇게 하면 많은\#호가 나 올 것 이다.한 줄 에 놓 아 도 매우 우아 하지 않다.그래서 진도 백분율 을 보 여 주 는 스 크 립 트 를 실현 하고 싶 습 니 다.
사고의 방향 을 실현 하 다.
  • 파일 을 가 져 오 는 줄 수
  • 4.567917.i++로 각 줄 의 처 리 를 실현 하 는 계수현재 처리 줄 수*100 을 파일 줄 수+%로 나 누 어 내 가 출력 할 백분율 결 과 를 얻 었 습 니 다4.567917.저 는 한 줄 에 전시 해 야 합 니 다.계속 추가 하거나 매번 한 줄 을 표시 하 는 것 이 아 닙 니 다.4.567918.
    그게 필요 해.우리 가 점차적으로 실현 하 자.
    파일 가 져 오 는 줄 수
    이것 은 비교적 간단 합 니 다.wc-l$file 로 얻 을 수 있 습 니 다.그러나 얻 은 결 과 는 만 족 스 럽 지 못 했다.
    
       999 3.log
    결과 의 앞 에 몇 개의 빈 칸 이 있 는데,나 는 빈 칸 을 없 애 야 하기 때문에 코드 는 바 뀌 었 다.
    
    wc -l $file | sed 's/^[ \t]*//g'
    이렇게 해서 시작 하 는 빈 칸 을 없 애고 빈 칸 으로 나 누 어 첫 번 째 를 취하 면 됩 니 다.cut 로 이 루어 집 니 다.
    
    wc -l $file | sed 's/^[ \t]*//g' | cut -d ' ' -f1
    OK,몇 개의 명령 의 조합 을 통 해 줄 의 숫자 를 쉽게 얻 을 수 있 습 니 다.
    echo 단일 줄 표시
    
    echo -en '\b\b\b\b'
    위 와 같이 커서 를 네 자리 앞 당 겨 내용 을 입력 하 는 것 입 니 다.\b.하 나 를 앞 당 겨 서 몇 개 를 입력 하면 몇 개 입 니 다.만약 에 시작 이 되면 앞으로 옮 길 수 없 기 때문에 몇 개 를 더 입력 하 는 것 은 문제 가 없습니다.
    최종 구현 코드 는 다음 과 같 습 니 다.
    
    #      i
    i=1
    
    #    3.log        ,           l
    l=$(wc -l 3.log | sed 's/^[ \t]*//g' | cut -d ' ' -f1)
    
    #       
    while read line; do
    
     #      
     echo -en "\b\b\b\b"`echo $i*100/$l | bc `'%'
    
     #    i++
     ((i++))
    
    #    3.log         
    done < 3.log
    #      OK,                 ,          
    echo -e '\b\b\b\bOK   '
    
    
    실현 효 과 는 다음 과 같다.

    좋아,간단 한 몇 줄 코드 를 통 해 내 가 원 하 는 효 과 를 실현 했다.
    위의 스 크 립 트 는 모두 mac 에서 테스트 를 통 과 했 습 니 다.Linux 에서 약간 다 를 수 있 습 니 다.
    궁금 한 점 이 있 으 시 면 메 시 지 를 남기 거나 본 사이트 의 커 뮤 니 티 에 가서 토론 을 교류 하 세 요.읽 어 주 셔 서 감사합니다. 도움 이 되 셨 으 면 좋 겠 습 니 다.본 사이트 에 대한 지지 에 감 사 드 립 니 다!

    좋은 웹페이지 즐겨찾기