-
概述
- 尝试格式化打印
-
背景
- 想用 shell 做一个随机打印日期的
-
环境
- os
- win10
- git-bash
- mintty-2.9.4
- os
1. 思路1: 随机数生成日期, 然后格式化打印
-
概述
- 随机数, 格式化
-
准备
- 随机数
- $RANDOM
- 格式化打印
- printf
- 随机数
-
问题
- printf 还不熟悉
- 这个可以学, 小问题
- 可能会生成不存在的日期
- 比如 02-30, 04-31 之类的
- 可以用 sed 或者 vim 修一遍, 但是感觉工作量有点大
- 生成时判断, 也不是很方便
- printf 还不熟悉
2. 思路2: 随机数指定范围, 然后用 date 命令创造日期
-
概述
- 随机数, date
-
准备
- 随机数
- $RANDOM
- date
- 格式化打印
-
我需要的格式是这样 2020-05-20
> date +%Y-%m-%d
-
- -d 指定需要格式化打印的日期
-
今天
> date -d '' +%Y-%m-%d
-
今天前/后一天
# 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"
-
指定日期
> date -d '20200520' +%Y-%m-%d
-
- 格式化打印
- 随机数
-
思路
-
用 $RANDOM 来控制天数
# 1. 可以找到 今天 到 去年今天之间的日期 > date -d "-$[RANDOM%365] day" +%Y-%m-%d # 2. 不想要今天, 也可以指定别的日期 > date -d "20200202 -$[RANDOM%365] day" +%Y-%m-%d
-
-
脚本
- 套个循环直接完事
- 略
- 套个循环直接完事
3. 后续
- 如果 还需要随机的时间, 我怎么办
-
ref 里用的是 数组
-
我想用 printf
-
我感觉, 应该是数组会快些吧...
-
当然能也有 好写的方法
> date -d "-$[RANDOM%365] day -$[RANDOM%24] hour" "+%Y-%m-%d %H:%M:%S"
-
ps
- ref
- shell产生指定范围内的随机时间
- 这个小哥写的脚本, 还是很不错的
- 关于 {1..10} 中使用 变量
- shell产生指定范围内的随机时间