跨多个 shell 的正则表达式兼容性

Regex compatibility across multiple shells

我正在使用以下代码检查 bash 脚本中的正确日期格式:

if [[ $variable == [0-9][0-9][0-9][0-9]-[0-1][0-9]-[0-3][0-9] ]]

格式应为:YYYY-MM-DD

这在 bash 中运行良好,但是我在尝试 运行 破折号或 sh 时遇到问题。你能帮我重写它以使其与 dash 和 sh 兼容吗?或者找到一个可以在所有 shell 上使用的不同解决方案?

提前致谢!

case 也应该在破折号中工作:

case 0015-18-32 in 
    [0-9][0-9][0-9][0-9]-[0-1][0-9]-[0-3][0-9] ) echo yes ;;
esac