Shell-Script

如何列印 Bitbucket 的前 5 個最大儲存庫

  • December 17, 2019

我正在嘗試編寫一個 shell 腳本,它將列印 Bitbucket 的前 5 個最大儲存庫,並將顯示項目名稱、儲存庫名稱及其大小。儲存庫配置文件範例:

$$ bitbucket $$ 項目 = TEST 儲存庫 = 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 

語法有什麼問題?

您的第一行執行du -sh /bbhome/shared/data/repositories/* |sort -h |tail -5並通過標準輸出將結果輸出到終端。然後你的 while 循環遍歷它的標準輸入(它是空的)。

您需要另一個|從管道連接標準輸出到循環的標準輸入:

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

 <stuff with "$line">

done

引用自:https://unix.stackexchange.com/questions/557691