日期更改脚本

日期更改脚本
#!/bin/sh

after=$(date - date "today - $(date +% d) days" +%Y-%m-%d)

now=$(date +%Y%m01) 

sed -i 's/20180301/'$now'/g' hyb.txt; 

sed -i 's/2018-02-28/'$after'/g' hyb.txt;

如何将变量分配给我的日期 20180301 和 2018-02-28 的格式,以便不再像我在脚本中那样将它们放入。

答案1

假设我在上面评论中的假设是正确的:

# "now" == first day of this month: format YYYYmmdd
now=$( date "+%Y%m01" )

# "after" == last day of previous month: format YYYY-mm-dd
after=$( date -d "$now - 1 day" "+%Y-%m-%d" )

echo "now=$now"         # now=20190901
echo "after=$after"     # after=2019-08-31

答案2

这应该有帮助:

#!/bin/sh

file=hyb.txt

nowfile=${1:-20180301}
afterfile="${2:-"$(date -d "$nowfile -1 day" +"%Y-%m-%d")"}"

now=$(date +%Y%m01) 
after=$(date -d "$now -1 days" +%Y-%m-%d)

echo sed -i 's/'"$nowfile"'/'"$now"'/g' "$file"; 
echo sed -i 's/'"$afterfile"'/'"$after"'/g' "$file";

该脚本需要参数。

参数 1 是now文件内需要更改的值。如果未给出参数 1,则默认为20180301

参数 2 是after文件 ( afterfile) 内要更改的值。如果未给出,则根据now文件 ( ) 内部的值计算该值nowfile

调用该脚本./script 20180301 2018-02-28作为您的原始脚本。

调用./script 20180901(无第二个参数)让脚本计算新afterfile值(结果为20180831)。

如果计算出的值符合您的需要,请删除echosed 之前的两个值以使脚本处理该文件。

相关内容