如何在shell中将十六进制数与十六进制数进行比较?
至少bash
直接支持十六进制整数,只要它们以0x
为前缀:
$ [[ 0xdead -lt 0xcafe ]] && echo yes || echo no
no
$ [[ 0xdead -gt 0xcafe ]] && echo yes || echo no
yes
你只需正常使用比较运算符即可...
case "$num" in ''|*[!a-fA-F0-9]*) echo "not hex";; *) echo "hex";; esac
来测试十六进制数。 - Nick Bullprintf
将十六进制数转换为十进制数,然后比较数字值,例如: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
printf -v x_num“%d”“$x”
。 - Cyrus怎么样?
(( "$answer" == 0x42 ))
echo $?
answer=0xDEADCAFE
(( "$answer" == 0xDEADCAFE ))
echo $?