gpt4 book ai didi

linux - 在不指定字符数限制的情况下检查 shell 脚本中的数字是否为十六进制 [bash]

转载 作者:塔克拉玛干 更新时间:2023-11-02 23:19:22 25 4
gpt4 key购买 nike

我想在 shell 脚本中检查一个数字是否为十六进制。我已经尝试了下面的代码,它检查范围 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 循环来检查每个字符作为最后的选择。有没有更好的方法在不指定编号的情况下实现检查。字符数?

最佳答案

我不会用正则表达式来做。

HEX="301DE8"
(( 16#$HEX ))

然后通过$?检查最后一条语句的返回码。

如果是0,说明你的HEX没问题,否则就不是HEX数。

关于linux - 在不指定字符数限制的情况下检查 shell 脚本中的数字是否为十六进制 [bash],我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52297971/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com