私はLinuxシェルスクリプトを初めて使用します。現在、私は1日のパーティションに2年間のデータを保存する必要があるプロジェクトを進めています。毎日のパーティションには、1つのファイルにマージする必要がある200個のファイルがあります。
現在の日付を活用した変数を入力するコードを開発しました。以下はコードの断片です。手動介入なしでループを使用する方法を探しています。週に一度実行する必要があります。
daysToDeduct=<number>
day1=$((daysToDeduct-1))
day2=$((daysToDeduct-2))
day3=$((daysToDeduct-3))
day4=$((daysToDeduct-4))
day5=$((daysToDeduct-5))
day6=$((daysToDeduct-6))
day7=$((daysToDeduct-7))
DAY1=`date --date="$day1 days ago" +%Y%m%d`
DAY2=`date --date="$day2 days ago" +%Y%m%d`
DAY3=`date --date="$day3 days ago" +%Y%m%d`
DAY4=`date --date="$day4 days ago" +%Y%m%d`
DAY5=`date --date="$day5 days ago" +%Y%m%d`
DAY6=`date --date="$day6 days ago" +%Y%m%d`
DAY7=`date --date="$day7 days ago" +%Y%m%d`
hadoop fs -getmerge /apps/..../$DAY1 /.../$DAY1
.
...
hadoop fs -getmerge /apps/..../$DAY7 /.../$DAY7
事前にありがとう
答え1
ここに役立ついくつかのコードがあります。
#!/bin/bash
for i in $(seq 1 10)
do
echo $i: $(date --date="$i days ago" +%Y%m%d)
done
この部分は以下を印刷します。
1: 20191006
2: 20191005
3: 20191004
4: 20191003
5: 20191002
6: 20191001
7: 20190930
8: 20190929
9: 20190928
10: 20190927
- secを使用して1から200まで繰り返します。
- 日付として定義します(単に印刷します)。
役に立ったことを願っています:)
改善のために@Stephen Kittに感謝します!