is_int() { [[ $1 =~ ^[0-9]+$ ]]; }
The one-liner defines an is_int
function that can be used to check if some value or variable is a valid Bash integer.
The single command [[ $1 =~ ^[0-9]+$ ]]
in the function exits with success when the function parameter $1
matches the regular expression ^[0-9]+$
, that is, it contains only digits from start (^
) until the end ($
).
Examples:
is_int 123 # success
is_int 0123 # success
a="123"; is_int "$a" # success
is_int foo # fail
is_int " 123" # fail
is_int 123.0 # fail
is_int 123f # fail
is_int 0x33 # fail
is_int "" # fail
Note that the exit code of the last command executed in a function becomes the exit code of the function itself, so we don't need explicit return
statements, the single [[ ... ]]
is enough, we let its result bubble up.
When defining a function on the command line like this, it's important to terminate the function definition with ; }
as in this example: the semicolon and the space are both required for the syntax to be valid.
Functions are best to keep in script files, spelled out across multiple lines, more like this:
is_int() {
[[ $1 =~ ^[0-9]+$ ]]
}