Bash中的位掩码

时间:2018-04-26 19:11:55

标签: bash shell bit-manipulation bitmask

在shell脚本中是否可以使用以下代码?

var1=0xA (0b1010)
if ( (var1 & 0x3) == 0x2 ){
    ...perform action...
}

为了让我的意图100%明确,我希望的行动是在0x3(0b0011)检查var1的位并确保它等于0x2(0b0010)

 0b1010
&0b0011
_______
 0b0010 == 0x2 (0b0010)

2 个答案:

答案 0 :(得分:2)

是的,这完全有可能:

#!/bin/bash

var1=0xA # (0b1010)
if (( (var1 & 0x3) == 0x2 ))
then
  echo "Match"
fi

答案 1 :(得分:2)

POSIX算术表达式支持位操作:

if [ $(( var1 & 0x3 )) -eq $(( 0x2 )) ]; then

然而,使用bash中的算术语句更简单一点:

if (( var1 & 0x3 == 0x2 )); then