Date 使用ksh在HP-UX中获取过去的日期

Date 使用ksh在HP-UX中获取过去的日期,date,ksh,hp-ux,Date,Ksh,Hp Ux,好的,所以我需要在hp ux中将一个脚本从一个很好的linux&bash配置转换为ksh。每个命令都需要不同的语法,我想自杀。但是让我们跳过咆哮 这是我剧本的一部分 anterior=`date +"%Y%0m" -d '1 month ago'` 我基本上需要得到格式为201002的过去日期。在新环境中,%0m表示“无零”,而在另一个环境中,它表示“是的,请在我的字符串上加零”。它甚至不接受“一个月前”。我读过HP-UX的男人日期,似乎你就是不能用它做日期算术 我已经四处寻找了一段时间,但我

好的,所以我需要在hp ux中将一个脚本从一个很好的linux&bash配置转换为ksh。每个命令都需要不同的语法,我想自杀。但是让我们跳过咆哮

这是我剧本的一部分

anterior=`date +"%Y%0m" -d '1 month ago'`
我基本上需要得到格式为201002的过去日期。在新环境中,%0m表示“无零”,而在另一个环境中,它表示“是的,请在我的字符串上加零”。它甚至不接受“一个月前”。我读过HP-UX的男人日期,似乎你就是不能用它做日期算术

我已经四处寻找了一段时间,但我找到的都是冗长的解决方案。我不太明白,像添加日期这样的典型管理任务需要这么大的麻烦。难道没有办法把我的一行代码转换成另一行吗?来吧,我见过使用bc的建议解决方案,脚本上有30多行文字和神奇数字。最简单的解决方案似乎使用perl。。。但我不知道如何修改它们,因为它们相当神秘


谢谢

因为你的是一个简单的年份和月份的例子,所以你可以随时制作自己的日期数组。乙二醇

year=`date +%Y`
month=`date +%m`
anterior=`awk -vm="$month" -vyr="$year" 'BEGIN{
  mth["01"]="12"; mth["02"]="01"
  mth["03"]="02"; mth["04"]="03"
  mth["05"]="04"; mth["06"]="05"
  mth["07"]="06"; mth["08"]="07"
  mth["09"]="08"; mth["10"]="09"
  mth["11"]="10"; mth["12"]="11"
  if ( m=="01") { yr-- }
  print yr mth[m]
}' `
echo $anterior
但请注意,它非常简单,只用于生产前1个月的产品。
您也可以尝试ksh脚本

这是我找到的解决方案(警告:我在一个具有严格安全措施的客户机上工作,所以我甚至没有办法测试它,我需要将脚本发送给系统管理员进行测试并通过他进行调试)


无论如何,我觉得没有比这更简单的方法了。

我知道这是一个老话题,但我也遇到了同样的问题,这就是解决办法

创建一个shell脚本,例如last_month.sh

year=`date +%Y`
month=`date +%m`

month=`expr $month - 1`

if [ $month -eq 0 ]; then
   month=12
   year=`expr $year - 1`
fi

if [ $month -lt 10 ] then
   month="0$month"
fi

echo $year$month
exit 0
然后您可以调用脚本并分配给变量

./last_month.sh | read anterior
echo $anterior
这里返回上个月的数据,但您可以轻松更改以接受参数

./last_month.sh | read anterior
echo $anterior