Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

Bit mask in Bash

Is something like the following code possible within a shell script?

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

Just to make my intentions 100% clear my desired action would be to check bits of var1 at 0x3 (0b0011) and make sure that it equals 0x2 (0b0010)

 0b1010
&0b0011
_______
 0b0010 == 0x2 (0b0010)
like image 541
Jens Petersen Avatar asked Apr 26 '18 19:04

Jens Petersen


2 Answers

Bit manipulation is supported in POSIX arithmetic expressions:

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

However, it's a bit simpler use an arithmetic statement in bash:

if (( (var1 & 0x3) == 0x2 )); then
like image 53
chepner Avatar answered Sep 18 '22 07:09

chepner


Yes, this is entirely possible:

#!/bin/bash

var1=0xA # (0b1010)
if (( (var1 & 0x3) == 0x2 ))
then
  echo "Match"
fi
like image 22
that other guy Avatar answered Sep 18 '22 07:09

that other guy