Bash 按位运算符

Jim*_*mes 2 syntax bash bitwise-operators

知道为什么下面的代码不起作用吗?

hex_var='a'
processed=((3 & $hex_var) | 8)
Run Code Online (Sandbox Code Playgroud)

对‘算术展开’还是没怎么了解!

cod*_*ter 5

你的算术表达式是错误的。您可以这样做:

hex_var=0xa
processed=$(( (3 & $hex_var) | 8 ))
echo $processed # yields 10
Run Code Online (Sandbox Code Playgroud)

或者,正如戈登戴维森所建议的那样,您可以使用该#符号来明确指定基数:

hex_var=a
processed=$(( (3 & 16#$hex_var) | 8 ))
Run Code Online (Sandbox Code Playgroud)

看: