You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Mac OS下编写创建带日期Markdown文件的Shell脚本date报错如何解决?

问题原因

你遇到的报错是因为 macOS 自带的 date 工具为 BSD 版本,与 Linux 常用的 GNU date 语法不兼容,你脚本中使用的 -d 相对日期解析语法在 BSD date 下不支持,因此会反复输出 date 用法提示。

完整修改后脚本
#!/bin/bash

# 读取原始标题用于 front matter 填充
echo "请输入博客文章标题:"
read RAW_TITLE
# 把标题中的空格替换为连字符,生成文件名用的标题格式
TITLE=${RAW_TITLE// /-}

# 生成未来9个周一的日期列表(适配 macOS BSD date 语法)
echo "可选的未来9个周一日期如下:"
declare -a monday_dates
for ((i=0; i<9; i++))
do
    # 计算第i个周一的日期,指定输出格式为 YYYY-MM-DD
    current_monday=$(date -v +$((i*7))d -v +monday +%Y-%m-%d)
    monday_dates+=("$current_monday")
    echo "$((i+1)). $current_monday
done

# 提示用户选择目标日期
echo "请输入目标日期对应的序号:"
read select_index
# 输入合法性校验
if ! [[ $select_index =~ ^[1-9]$ ]]; then
    echo "输入不合法,请输入1-9之间的数字"
    exit 1
fi
selected_date=${monday_dates[$((select_index-1))]}

# 拼接生成文件名
FILENAME="${selected_date}-${TITLE}.md"

# 写入预填充的 front matter 内容
cat > "$FILENAME" <<EOF
---
layout:
title: ${RAW_TITLE}
description:
---
EOF

# 自动调用 vim 打开生成的文件
vim "$FILENAME"
功能说明
  • 适配 macOS 系统的 date 语法,不会再输出 date 命令错误提示
  • 自动保留原始带空格的标题写入文件头的title字段,文件名使用连字符格式符合命名规范
  • 生成9个未来周一日期供选择,自带输入合法性校验
  • 自动生成符合命名规则的markdown文件并自动唤起vim进入编辑状态

内容的提问来源于stack exchange,提问作者Gallo Cochino

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.04 14:45:03