BASH:有一种简单的方法来检查字符串是否是有效的SHA-1(或MD5)哈希?

Phi*_*ppe 3 regex bash

这一切都在标题中.

相位的问题的另一种方法是:在bash,什么是检查字符串是否是40(或32)中的人物的范围序列的简洁的方式[0-9][a-f]

aio*_*obe 9

试试32个字符:

if [[ $SOME_MD5 =~ ^[a-f0-9]{32}$ ]]
then
    echo "Match"
else
    echo "No match"
fi
Run Code Online (Sandbox Code Playgroud)


Dim*_*lov 8

具有功能:

is_valid() {
    case $1 in
      ( *[!0-9A-Fa-f]* | "" ) return 1 ;;
      ( * )                
        case ${#1} in
          ( 32 | 40 ) return 0 ;;
          ( * )       return 1 ;;
        esac
    esac    
  }
Run Code Online (Sandbox Code Playgroud)

如果shell支持POSIX字符类 [![:xdigit:]]可以代替使用[!0-9A-Fa-f].

  • 一些旧的shell也可能更喜欢`[!0-9a-f]`而不是`[^ 0-9a-f]`.你可能想要包含大写的情况(原文如此). (2认同)