Bitbucket의 상위 5개 가장 큰 저장소를 인쇄하는 방법

Bitbucket의 상위 5개 가장 큰 저장소를 인쇄하는 방법

저는 Bitbucket의 가장 큰 저장소 5개를 인쇄하고 프로젝트 이름, 저장소 이름 및 크기를 표시하는 셸 스크립트를 작성하려고 합니다. 저장소 구성 파일 예:

[bitbucket] 프로젝트=테스트 저장소=customer_management_test

du 명령의 출력:

du -sh /bbhome/shared/data/repositories/* |sort -h |tail -5
2.0G    /bbhome/shared/data/repositories/1792
2.7G    /bbhome/shared/data/repositories/3517
3.0G    /bbhome/shared/data/repositories/2450
3.1G    /bbhome/shared/data/repositories/5703
4.4G    /bbhome/shared/data/repositories/2829

REHL Bitbucket 시스템에서 실행하려는 코드는 다음과 같습니다.

du -sh /bbhome/shared/data/repositories/* |sort -h |tail -5
while IFS= read -r line;do
        DIR=`echo $line | awk '{print$2}'`
        Rep=`cat $DIR/repository-config |grep 'project\|repo' |  tr '\n' ' '`
        Size=`echo $line | awk '{print $1}' `
        echo $Size $Rep
done

그러나 예상한 결과를 얻지 못합니다.

실제:

2.0G    /bbhome/shared/data/repositories/1792
2.7G    /bbhome/shared/data/repositories/3517
3.0G    /bbhome/shared/data/repositories/2450
3.1G    /bbhome/shared/data/repositories/5703
4.4G    /bbhome/shared/data/repositories/2829

예상(1792년의 예):

2.0G   project = TEST  repository = customer_management_test 

문법에 문제는 없나요?

답변1

첫 번째 줄이 실행되고 du -sh /bbhome/shared/data/repositories/* |sort -h |tail -5stdout을 통해 결과가 터미널에 인쇄됩니다. 그런 다음 while 루프는 표준 입력(비어 있음)을 반복합니다.

|파이프에서 루프의 stdin과 stdout까지 또 다른 연결이 필요합니다 .

du -sh /bbhome/shared/data/repositories/* |sort -h |tail -5 |
while IFS= read -r line; do

  <stuff with "$line">

done

관련 정보