linux - 一年内嵌套几个月的for循环
问题描述
我目前正在编写一个 shell 脚本,它将查询一些配置单元表的每月记录计数以获取表列表,然后将总计数值提取为 .txt 文件。我目前有代码可以每年查询所有表,但是我怎样才能最好地让它每年每月循环一次呢?
例如,现在我的脚本将循环遍历我经过的每一年(year=2001, 2002,2003,...)并查询我的表并提取文件。我希望它每年每月循环一次,以便理想情况下每年有 12 个文件,并在我分配的任何年份继续循环。
下面是我目前拥有的示例伪代码:
#!/usr/bin/sh
years=2001,2002,2003,2004
for year in $(echo ${years} | sed "s/,/ /g")
do
select_sql="INSERT OVERWRITE LOCAL DIRECTORY <path> ROW FORMAT DELIMITED FIELDS TERMINATED BY '~' select * from tbl where year(date)=$year"
beeline -u "<jdbc connection>" --hiveconf -e "$select_sql"
done
解决方案
这个问题有一个bash
标签,但解释器是/usr/bin/sh
.
无论如何,让我们使用bash
.
#!/bin/bash
for clause in "year(date)="{2001,2002,2003,2004}" and month(data)='"{Jan,Feb,Mar,Apr,May,Jun,Jul,Aug,Sep,Oct,Nov,Dec}"'"
do
select_sql="INSERT OVERWRITE LOCAL DIRECTORY <path> ROW FORMAT DELIMITED FIELDS TERMINATED BY '~' select * from tbl where $clause"
echo "$select_sql"
#beeline -u "<jdbc connection>" --hiveconf -e "$select_sql"
done
推荐阅读
- javascript - jQuery字符串到数字得到四舍五入
- python - How to visualize the KDE of one specific variable along with the histogram of the hole population of a data set in one graph using Python Anaconda
- php - 在字符串中替换一系列数字(身份证)PHP
- css - 如何对齐盒子项目所以按钮
- python - 如何修复:即使文件尚未上传,FilesBrowse() 也会触发事件 (PySimpleGUI)
- html - 如何使文本+按钮响应
- mysql - 如何正确设置我的本地数据库以部署到 Heroku?
- tensorflow - colab_utils.annotate() - 执行未完成
- java - 用于识别字符串值中的字符值的子字符串方法
- asp.net-mvc - 选择默认选项作为图标,提示没有文本“未选择”