Scripts often receive numbers as strings. A validation step should confirm the shape before arithmetic uses the value.

Program

Play the script to choose an input value and see whether the digit check passes.

input
number_validation.sh
Replay: real traced execution (multi-file project)
#!/usr/bin/env bash

input="42"
if [[ "$input" =~ ^[0-9]+$ ]]; then
    status="number"
else
    status="invalid"
fi
echo "$input:$status"
#!/usr/bin/env bash

input="4x"
if [[ "$input" =~ ^[0-9]+$ ]]; then
    status="number"
else
    status="invalid"
fi
echo "$input:$status"
  1. input ← 42

    3input="42"4if [[ "$input" =~ ^[0-9]+$ ]]; then
    values this step42input
  2. if [[ "$input" =~ ^[0-9]+$ ]]; then

    3input="42"4if [[ "$input" =~ ^[0-9]+$ ]]; then5    status="number"
    values this step42input
  3. status ← number

    4if [[ "$input" =~ ^[0-9]+$ ]]; then5    status="number"6else
    values this stepnumberstatus
  4. echo "$input:$status"

    8fi9echo "$input:$status"
    output42:number
    values this step42inputnumberstatus
  1. input ← 4x

    3input="4x"4if [[ "$input" =~ ^[0-9]+$ ]]; then
    values this step4xinput
  2. if [[ "$input" =~ ^[0-9]+$ ]]; then

    3input="4x"4if [[ "$input" =~ ^[0-9]+$ ]]; then5    status="number"
    values this step4xinput
  3. status ← invalid

    6else7    status="invalid"8fi
    values this stepinvalidstatus
  4. echo "$input:$status"

    8fi9echo "$input:$status"
    output4x:invalid
    values this step4xinputinvalidstatus
validation Validation checks input before later logic trusts it.
regex `^[0-9]+$` accepts only one or more digits.
status word A compact status makes validation failures easy to test.