Linux- Shell - 随机日期

  1. 概述

    1. 尝试格式化打印
  2. 背景

    1. 想用 shell 做一个随机打印日期的
  3. 环境

    1. os
      1. win10
    2. git-bash
      1. mintty-2.9.4

1. 思路1: 随机数生成日期, 然后格式化打印

  1. 概述

    1. 随机数, 格式化
  2. 准备

    1. 随机数
      1. $RANDOM
    2. 格式化打印
      1. printf
  3. 问题

    1. printf 还不熟悉
      1. 这个可以学, 小问题
    2. 可能会生成不存在的日期
      1. 比如 02-30, 04-31 之类的
      2. 可以用 sed 或者 vim 修一遍, 但是感觉工作量有点大
      3. 生成时判断, 也不是很方便

2. 思路2: 随机数指定范围, 然后用 date 命令创造日期

  1. 概述

    1. 随机数, date
  2. 准备

    1. 随机数
      1. $RANDOM
    2. date
      1. 格式化打印
        1. 我需要的格式是这样 2020-05-20

          > date +%Y-%m-%d
          
      2. -d 指定需要格式化打印的日期
        1. 今天

          > date -d '' +%Y-%m-%d
          
        2. 今天前/后一天

          # week, month, year 也可以使用
          > date -d '-1 day' +%Y-%m-%d
          > date -d '1 day' +%Y-%m-%d
          
        3. 指定日期

          > date -d '20200520' +%Y-%m-%d
          
  3. 思路

    1. 用 $RANDOM 来控制天数

      # 可以找到 今天 到 去年今天之间的日期
      > date -d "-$[RANDOM%365] day" +%Y-%m-%d
      
  4. 脚本

    1. 套个循环直接完事

3. 后续

  1. 如果要求时间, 我怎么办
    1. ref 里用的是 数组
    2. 我想用 printf
    3. 我感觉, 应该是数组会快些吧...

ps

  1. ref
    1. shell产生指定范围内的随机时间
      1. 这个小哥写的脚本, 还是很不错的
    2. 关于 {1..10} 中使用 变量
      1. Variables in bash seq replacement ({1..10})
        1. 第一个过期了, 主要看 第二个
      2. How do I iterate over a range of numbers defined by variables in Bash?

猜你喜欢

转载自www.cnblogs.com/xy14/p/12926464.html