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. 今天前/后一天

          # day, week, month, year 可以使用
          > date -d '-1 day' +%Y-%m-%d
          > date -d '1 day' +%Y-%m-%d
          
          # hour, minutes, second 也可以
          # 注意后面需要用 "" 
          > date -d '1 hour' "+%Y-%m-%d %H:%M:%S"
          > date -d '-1 hour' "+%Y-%m-%d %H:%M:%S"
          
        3. 指定日期

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

    1. 用 $RANDOM 來控制天數

      # 1. 可以找到 今天 到 去年今天之間的日期
      > date -d "-$[RANDOM%365] day" +%Y-%m-%d
      
      # 2. 不想要今天, 也可以指定別的日期
      > date -d "20200202 -$[RANDOM%365] day" +%Y-%m-%d
      
  4. 腳本

    1. 套個循環直接完事

3. 后續

  1. 如果 還需要隨機的時間, 我怎么辦
    1. ref 里用的是 數組

    2. 我想用 printf

    3. 我感覺, 應該是數組會快些吧...

    4. 當然能也有 好寫的方法

      > date -d "-$[RANDOM%365] day -$[RANDOM%24] hour" "+%Y-%m-%d %H:%M:%S"
      

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?


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM