如何使用 Solaris shell 命令检查日期格式为 YYYYMMDD?

How to check the date format as YYYYMMDD using Solaris shell command?

我已经搜索过了,但在 SunOS 5.10 中显示日期格式的选项是存在的,但没有关于如何根据我们的要求检查有效格式的答案。

#!/bin/bash
date +'%Y%m%d' -d "" 2>&1 >> ${LOG_FILE}
is_valid=$?
if [ $is_valid -eq 1 ];then
   echo "Invalid date format"
   exit 2
fi

当我执行命令时,我在选项中传递了日期,如果日期格式不正确,shell 应该退出。 此格式检查命令在 SunOS 中不起作用。

我认为 date 的 SunOS 5.10 版本不接受 -d 选项。但是,它确实提供了 cal 命令。因为你的日期格式都是数字,所以很容易分成年​​、月、日,将月和年输入 cal,然后使用 grep 查找日期。类似于:

#!/usr/xpg4/bin/sh

case "" in
    [0-9][0-9][0-9][0-9][0-9][0-9][0-9][0-9])
        Y=${1%????}
        t=${1#????}
        m=${t%??}; m=${m##0}
        d=${t#??}; d=${d##0}
        if [ -n "$(cal "$m" "$Y" 2>&1 | grep "\<$d\>")" ]; then
            echo ok
        else
            echo no
        fi
        ;;
    *)
        echo no
        ;;
esac

注意:未经测试,因为我不再有任何 Solaris 10 机器。

很多人在 /usr/gnu/bin 中安装 GNU 实用程序,例如 bash,或类似的东西。有时,从源代码或软件包安装 bash 可能会帮助您编写脚本。

我总是在 Solaris 上用 pdksh 替换 ksh,因为这是一种完全不同的脚本语法。我厌倦了必须拥有两份副本或重写所有内容。与 bash.

相同