如何使用 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.
相同
我已经搜索过了,但在 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.
相同