Битовая маска в Баш - PullRequest
       28

Битовая маска в Баш

0 голосов
/ 26 апреля 2018

Возможно ли что-то вроде следующего кода в сценарии оболочки?

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

Просто чтобы прояснить свои намерения на 100%, я хотел бы проверить биты var1 на 0x3 (0b0011) и убедиться, что он равен 0x2 (0b0010)

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

Ответы [ 2 ]

0 голосов
/ 26 апреля 2018

Манипулирование битами поддерживается в арифметических выражениях POSIX:

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

Однако в bash немного проще использовать арифметическое утверждение:

if (( (var1 & 0x3) == 0x2 )); then
0 голосов
/ 26 апреля 2018

Да, это вполне возможно:

#!/bin/bash

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