Data Validation
Enum Validation
Allow Known Values
When a script accepts a limited set of words, a case statement can reject everything else.
Program
Play the script to choose an environment name and see whether it is allowed.
enum_validation.sh
Replay: real traced execution (multi-file project)
#!/usr/bin/env bash
environment="dev"
case "$environment" in
dev|test|prod) status="allowed" ;;
*) status="unknown" ;;
esac
echo "$environment:$status"
#!/usr/bin/env bash
environment="qa"
case "$environment" in
dev|test|prod) status="allowed" ;;
*) status="unknown" ;;
esac
echo "$environment:$status"
environment ← dev
3environment="dev"4case "$environment" invalues this stepdevenvironmentcase "$environment" in
3environment="dev"4case "$environment" in5 dev|test|prod) status="allowed" ;;values this stepdevenvironmentstatus ← allowed
4case "$environment" in5 dev|test|prod) status="allowed" ;;6 *) status="unknown" ;;values this stepallowedstatusecho "$environment:$status"
7esac8echo "$environment:$status"outputdev:allowedvalues this stepdevenvironmentallowedstatus
environment ← qa
3environment="qa"4case "$environment" invalues this stepqaenvironmentcase "$environment" in
3environment="qa"4case "$environment" in5 dev|test|prod) status="allowed" ;;values this stepqaenvironmentstatus ← unknown
5 dev|test|prod) status="allowed" ;;6 *) status="unknown" ;;7esacvalues this stepunknownstatusecho "$environment:$status"
7esac8echo "$environment:$status"outputqa:unknownvalues this stepqaenvironmentunknownstatus
enum
An enum is a small fixed set of accepted values.
case patterns
`dev|test|prod` groups accepted words in one branch.
default branch
`*)` catches unknown values so they do not silently pass.