diff --git a/common b/common index 8e4f4df..cc85150 100644 --- a/common +++ b/common @@ -95,11 +95,15 @@ chroot_umount() { umount "${CHROOT_ACTIVE_MOUNTS[@]}" } +try_cast() ( + _=$(( $1#$2 )) +) 2>/dev/null + valid_number_of_base() { local base=$1 len=${#2} i= for (( i = 0; i < len; i++ )); do - { _=$(( $base#${2:i:1} )) || return 1; } 2>/dev/null + try_cast "$base" "${2:i:1}" || return 1 done return 0 diff --git a/test/test_valid_number_of_base b/test/test_valid_number_of_base index 97e6e9b..5afdc59 100755 --- a/test/test_valid_number_of_base +++ b/test/test_valid_number_of_base @@ -11,4 +11,5 @@ EXPECT_success valid_number_of_base 10 1234567890 EXPECT_failure valid_number_of_base 10 1234.567890 EXPECT_failure valid_number_of_base 10 1234567890abcdef -EXPECT_success valid_number_of_base 18 1234567890abcdefghi +EXPECT_success valid_number_of_base 18 1234567890abcdefgh +EXPECT_failure valid_number_of_base 18 1234567890abcdefghi