代码之家  ›  专栏  ›  技术社区  ›  Jimmy

SmartCTL位掩码

  •  0
  • Jimmy  · 技术社区  · 11 年前

    你好,

    我已经在谷歌上搜索过了,但还没有找到这条线的作用:

    smartstat=$((($?&8))

    从长远来看,我试图直接访问出口状态的第三位。

    SmartCTL默认使用8位。当出现错误(如磁盘故障)时,它将使第三位为1,并向日志发送错误。

    smartstat=有人直接访问第三位的$(($?&8))。直接从smartctl的手册页:

    smartstat=$((($?&8)) 这只关注退出状态$?的第3位?(因为8=2^3)。如果SMART状态检查返回“磁盘故障”,shell变量$smartstat将为非零,否则为零。

    那么,有人能告诉我什么是&在那行代码中做什么?

    1 回复  |  直到 11 年前
        1
  •  2
  •   Vlad    11 年前

    &是一个“按位和”运算符。设A=15

    A=1111(二进制)

    8=1000(二进制)

    A&B=1000(二进制)