通过 shell 脚本循环日期并处理从客户端 SFTP 到我们的 SFTP 的复制文件

问题描述 投票:0回答:1

我在如何处理从客户端 SFTP 服务器到我们的 SFTP 服务器的副本文件并将其移动到特定文件夹时遇到一些问题。 在这种情况下,我需要每月 11 点运行一个 shell 脚本。

我需要的是。

  1. 如果我们已经设置了两个参数作为输入,我们如何在开始日期和结束日期之间循环 shell 脚本? 第一个参数是文件名。 “_DAILY_REJECT.csv” 第二个参数是本月和年份。 “MMYYYY”
  2. 如何连接第二个和第一个参数?因此要获取的完整文件名是 DDMMYYYY_DAILY_REJECT.csv。

示例:我需要获取从 12012024_DAILY_REJECT.csv 到 11022024_DAILY_REJECT.csv 的文件。 Shell 脚本参数:_DAILY_REJECT.csv 022024 按照我的理解,应该是这样的:

filename=$1
month=$2
start=12012024
end=11022004
while [[ $start -le $end ]]
do
 echo $start
 # concatenate date with file name
 # Check if the file exists.
 # get file
 # Move the file to a specific path.
done

我希望你能帮我解决这个问题。

提前谢谢您。

linux bash shell date sh
1个回答
0
投票

我已经解决了这个问题,不需要第二个参数。

filename=$1
start="$(date -d "$(date +%Y-%m-01 -d "$(date +%Y-%m-01) -1 month")" +%Y%m)12"
end=$(date +%Y%m)11
while [[ $start -le $end ]]
do
 echo $start
 startD="${start:6:2}"
 startM="${start:4:2}"
 startY="${start:0:4}"
 startW="$startD$startM$startY"
 full_filename="${startW}$1"
 # Check if the file exists
 # get file
 # Move the file to a specific path.
 start=$(date -d"$start + 1 day" +"%Y%m%d")
done
© www.soinside.com 2019 - 2024. All rights reserved.