如何打印 Bitbucket 前 5 个最大的存储库

如何打印 Bitbucket 前 5 个最大的存储库

我正在尝试编写一个 shell 脚本,它将打印 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 -5并通过 stdout 将结果输出到终端。然后你的 while 循环遍历它的标准输入(它是空的)。

您需要另一个|从管道到循环的标准输入的连接标准输出:

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

  <stuff with "$line">

done

相关内容