如何在KornShell脚本中设置文件名为上月日期格式?
KornShell脚本实现每月1日FTP传输并以上月日期命名文件
关于逻辑存放的建议
建议将上月日期格式生成逻辑预先定义为变量,而非直接写在脚本主体中,原因如下:
- 代码结构更清晰,日期生成逻辑与FTP传输逻辑分离,便于阅读和维护
- 日期格式需要调整时,仅需修改变量定义,无需改动核心传输代码
- 变量可重复调用,若脚本其他环节需用到上月日期,直接引用即可
正确生成上月日期格式的方法
你之前使用的DATE=date +%d%m%y``仅能获取当前日期的数值格式,要生成类似MAR2023的上月日期格式,需借助date命令的相对日期参数:
适用于GNU date(Linux系统)
# 定义上月日期变量,%b为英文月份缩写,%Y为4位年份 LAST_MONTH=$(date -d "last month" +"%b%Y")
适用于BSD date(如macOS、FreeBSD)
LAST_MONTH=$(date -v -1m +"%b%Y")
完整脚本示例
#!/usr/bin/ksh # 定义上月日期格式变量(根据系统选择对应命令) LAST_MONTH=$(date -d "last month" +"%b%Y") # LAST_MONTH=$(date -v -1m +"%b%Y") # BSD系统启用此行 # 生成目标文件名 TARGET_FILE="filename_${LAST_MONTH}" # 校验当前日期是否为每月1日,避免非指定时间执行 CURRENT_DAY=$(date +%d) if [ "${CURRENT_DAY}" != "01" ]; then echo "今日非1号,终止FTP传输" exit 1 fi # FTP传输逻辑示例 ftp -inv << EOF open 你的FTP服务器地址 user 用户名 密码 put ${TARGET_FILE} bye EOF
内容的提问来源于stack exchange,提问作者STAKD
相关产品推荐
相关产品推荐

