Я хочу проверить, является ли число шестнадцатеричным в сценарии оболочки. Я пробовал приведенный ниже код, где он проверяет диапазон 0-9A-Fa-f
.
Т.е., если HEX = "301D" [4 символа], то приведенный ниже код будет работать. Моя цель - убрать зависимость от количества символов в чеке.
#!/bin/bash
HEX="301DE8"
#if ! [[ $HEX =~ ^[[:xdigit:]]{10}$ ]] ; then
#if ! [[ $HEX =~ ^[0-9A-Fa-f]{10}$ ]] ; then
#if ! [[ $HEX =~ ^[0-9A-Fa-f]$ ]] ; then
if ! [[ $HEX =~ ^[0-9A-Fa-f]{4}$ ]] ; then
echo "string is not hex"
else
echo "string contains hex digits"
fi
Я пытался увеличить лимит и убрать лимит. Но оба не сработали. Я думаю об использовании цикла while для проверки каждого символа в качестве последнего варианта.
Есть ли лучший способ реализовать проверку, не указывая нет. символов?