Linux shell(数组-循环-echo)

#!/bin/bash
# 定义表名数组
tables=("表名1" "表名2" "表名3" "表名4" "表名5")

months=("01" "02" "03" "04" "05" "06" "07" "08" "09" "10" "11" "12" )

# 循环统计每个表每个月占用空间大小
for table in ${tables[@]}
do
    echo $table >> output.txt
	for month in ${months[@]}
		do
			echo -n "2022${month}* " >> output.txt
			hadoop fs -du -s "/user/hive/warehouse/$table/city=*/time=2022${month}*" | awk '{print $2}' | paste -s -d"+" - | bc >> output.txt
		done
    echo -n "202301* " >> output.txt
	hadoop fs -du -s "/user/hive/warehouse/cell.db/$table/city=*/time=202301*" | awk '{print $2}' | paste -s -d"+" - | bc >> output.txt
    echo -n "202302* " >> output.txt
	hadoop fs -du -s "/user/hive/warehouse/cell.db/$table/city=*/time=202302*" | awk '{print $2}' | paste -s -d"+" - | bc >> output.txt
    echo -n "202303* " >> output.txt
	hadoop fs -du -s "/user/hive/warehouse/cell.db/$table/city=*/time=202303*" | awk '{print $2}' | paste -s -d"+" - | bc >> output.txt
    echo -n "202304* " >> output.txt
	hadoop fs -du -s "/user/hive/warehouse/cell.db/$table/city=*/time=202304*" | awk '{print $2}' | paste -s -d"+" - | bc >> output.txt
    echo -n "202305* " >> output.txt
	hadoop fs -du -s "/user/hive/warehouse/cell.db/$table/city=*/time=202305*" | awk '{print $2}' | paste -s -d"+" - | bc >> output.txt
done
  1. 数组tables 和 months 的定义
  2. for in 这种循环结构的使用(可以有别的表达形式)
  3. echo 的 -n 表示不换行输出
  4. >> 表示追加到文件(>是覆盖)
  5. 值得注意的地方在于:一开始使用 sh 文件名.sh 执行文件总显示syntax报错,这是因为在系统中sh被重定向(重命名)了,ls -l /bin/*sh 就可以看到具体的重定向情况,可以将sh 改用 bash或者别的方式执行。
  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值