Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/bash/18.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Bash 如何在shell中比较十六进制数和十六进制数?_Bash_Shell - Fatal编程技术网

Bash 如何在shell中比较十六进制数和十六进制数?

Bash 如何在shell中比较十六进制数和十六进制数?,bash,shell,Bash,Shell,如何在shell中比较十六进制数和十六进制数 怎么样 (( "$answer" == 0x42 )) echo $? answer=0xDEADCAFE (( "$answer" == 0xDEADCAFE )) echo $? 至少bash直接支持十六进制整数,前提是它们的前缀是0x: $ [[ 0xdead -lt 0xcafe ]] && echo yes || echo no no $ [[ 0xdead -gt 0xcafe ]] && echo y

如何在shell中比较十六进制数和十六进制数

怎么样

(( "$answer" == 0x42 ))
echo $?

answer=0xDEADCAFE
(( "$answer" == 0xDEADCAFE ))
echo $?

至少
bash
直接支持十六进制整数,前提是它们的前缀是
0x

$ [[ 0xdead -lt 0xcafe ]] && echo yes || echo no
no
$ [[ 0xdead -gt 0xcafe ]] && echo yes || echo no
yes

您只需正常使用比较运算符…

您可以使用
printf
将十六进制数转换为小数,然后您可以比较数值,例如:

x="0xdead"
y="0xcafe"

x_num=$(printf "%d" "$x")
y_num=$(printf "%d" "$y")

if [ $x_num -gt $y_num ]; then
    echo "x is my value"
else
   echo "x is not my value"
fi

什么意思?是否希望“0xdead”等于“dEad”或“57005”?还需要更多的细节,包括你迄今为止所做的尝试。祝你好运。实际上我是这样写的。。。。如果测试$1-eq“00”,其中$1是十六进制值。嘿,我还有一个疑问:如何检查输入是数字还是字符串?@bd1257晚了6年,但请尝试在“|*[!a-fA-F0-9]*)中使用
大小写“$num”;*)回显“不是十六进制”;*)回声“十六进制”;;esac
测试十六进制数。对于bash版本>=3.1,这也是可能的:
printf-v x_num“%d”“$x”