Shell-Script
如何列印 Bitbucket 的前 5 個最大儲存庫
我正在嘗試編寫一個 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