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

関連情報