如何使用UNIX Date工具根据指定日期获取对应的星期缩写?
实现方案
GNU date 环境(绝大多数 Linux 发行版默认使用)
直接使用 -d 参数传入指定日期即可,不需要额外转换下划线分隔符,命令如下:
date -d "2021_11_06" '+%a'
如果遇到部分特殊发行版不识别下划线分隔的日期,可以先将下划线替换为横杠再传入:
date -d "$(echo "2021_11_06" | tr '_' '-')" '+%a'
执行后会直接输出 Sat,无额外引号或其他内容。
BSD date 环境(macOS、FreeBSD 等系统默认使用)
需要用 -f 参数指定输入日期的格式,-j 参数表示不修改系统时间仅做格式转换,命令如下:
date -j -f "%Y_%m_%d" "2021_11_06" "+%a"
执行后直接输出目标星期缩写。
跨环境通用脚本
如果需要兼容不同系统,可以使用如下脚本,调用时直接将目标日期作为第一个参数传入即可:
#!/bin/bash input_date="$1" # 判断当前系统的date工具类型 if date --version >/dev/null 2>&1; then # GNU date 逻辑 date -d "$input_date" '+%a' else # BSD date 逻辑 date -j -f "%Y_%m_%d" "$input_date" "+%a" fi
使用示例:
- 保存上述代码为
get_weekabbr.sh - 赋予执行权限:
chmod +x get_weekabbr.sh - 执行查询:
./get_weekabbr.sh 2021_11_06
内容的提问来源于stack exchange,提问作者user2654953
相关产品推荐
相关产品推荐

