用于在文本文件中使用 T+2 更新日期 (T ) 的 Shell 脚本

用于在文本文件中使用 T+2 更新日期 (T ) 的 Shell 脚本

比方说,出现在文本文件中第 4 个位置的 DD-Mmm-YYYY 格式的日期,我需要用 T+2 更新日期 T。如果星期四或星期五的日期错误,则日期应替换为 T+4。忽略周末。

我尝试了一个脚本,但我的 if 条件不起作用

#!/bin/sh
if [ $# -ne 1 ]
then echo "Usage: read.sh filename";
exit 1;
fi

while read line
 do
  echo $line
 olddate=$(echo $line | cut -d, -f4)
echo "olddate $olddate"
echo $(date -d $olddate +%a)
if [ "date -d $olddate +%a" = Thu ] || [ "date -d $olddate +%a" = Fri ]; then
newdate=$(date +%d-%b-%Y -d "$olddate 4 day")
else
newdate=$(date +%d-%b-%Y -d "$olddate 2 day")
fi
echo "newdate $newdate"
record=$(echo $line | sed "s|${olddate}|${newdate}|")
echo "new record $record"
done < $1

答案1

对于这两个比较,您给出了两个始终比较 false 的字符串,因此需要用命令替换来替换它们:

if [ "date -d $olddate +%a" = Thu ] || [ "date -d $olddate +%a" = Fri ]; then
    newdate=$(date +%d-%b-%Y -d "$olddate 4 day")
else
    newdate=$(date +%d-%b-%Y -d "$olddate 2 day")
fi

IE

today="$(date -d $olddate +%a)"
if [ "$today" = Thu ] || [ "$today" = Fri ]; then
    newdate=$(date +%d-%b-%Y -d "$olddate 4 day")
else
    newdate=$(date +%d-%b-%Y -d "$olddate 2 day")
fi

相关内容