| 副标题[/!--empirenews.page--] 

 在 Bash 中,你可以使用 & 作为 AND(逻辑和)操作符。 有人可能会认为两篇文章中的 &意思差不多,但实际上并不是。虽然 第一篇文章讨论了如何在命令末尾使用 & 来将命令转到后台运行,在之后剖析了流程管理,第二篇文章将  & 看作引用文件描述符的方法,这些文章让我们知道了,与<和>结合使用后,你可以将输入或输出引导到别的地方。 但我们还没接触过作为 AND 操作符使用的 &。所以,让我们来看看。 & 是一个按位运算符如果你十分熟悉二进制数操作,你肯定听说过 AND 和 OR 。这些是按位操作,对二进制数的各个位进行操作。在 Bash 中,使用 &作为 AND 运算符,使用|作为 OR 运算符: AND: 0 & 0 = 00 & 1 = 01 & 0 = 01 & 1 = 1
 OR: 0 | 0 = 00 | 1 = 11 | 0 = 11 | 1 = 1
 你可以通过对任何两个数字进行 AND 运算并使用 echo输出结果: $ echo $(( 2 & 3 )) # 00000010 AND 00000011 = 000000102$ echo $(( 120 & 97 )) # 01111000 AND 01100001 = 0110000096
 OR(|)也是如此: $ echo $(( 2 | 3 )) # 00000010 OR 00000011 = 000000113$ echo $(( 120 | 97 )) # 01111000 OR 01100001 = 01111001121
 说明: 
    使用 (( ... ))告诉 Bash 双括号之间的内容是某种算术或逻辑运算。(( 2 + 2 ))、(( 5 % 2 ))(%是求模运算符)和((( 5 % 2 ) + 1))(等于 3)都可以工作。像变量一样,使用 $提取值,以便你可以使用它。空格并没有影响:((2+3))等价于(( 2+3 ))和(( 2 + 3 ))。Bash 只能对整数进行操作。试试这样做: (( 5 / 2 )),你会得到2;或者这样(( 2.5 & 7 )),但会得到一个错误。然后,在按位操作中使用除了整数之外的任何东西(这就是我们现在所讨论的)通常是你不应该做的事情。 提示: 如果你想看看十进制数字在二进制下会是什么样子,你可以使用 bc,这是一个大多数 Linux 发行版都预装了的命令行计算器。比如: bc <<< "obase=2; 97"
 这个操作将会把 97转换成十二进制(obase中的o代表 “output” ,也即,“输出”)。 bc <<< "ibase=2; 11001011"
 这个操作将会把 11001011转换成十进制(ibase中的i代表 “input”,也即,“输入”)。 && 是一个逻辑运算符虽然它使用与其按位表达相同的逻辑原理,但 Bash 的 &&运算符只能呈现两个结果:1(“真值”)和0(“假值”)。对于 Bash 来说,任何不是0的数字都是 “真值”,任何等于0的数字都是 “假值”。什么也是 “假值”同时也不是数字呢: $ echo $(( 4 && 5 )) # 两个非零数字,两个为 true = true1$ echo $(( 0 && 5 )) # 有一个为零,一个为 false = false0$ echo $(( b && 5 )) # 其中一个不是数字,一个为 false = false0
 与 &&类似, OR 对应着||,用法正如你想的那样。 以上这些都很简单……直到它用在命令的退出状态时。 && 是命令退出状态的逻辑运算符正如我们在之前的文章中看到的,当命令运行时,它会输出错误消息。更重要的是,对于今天的讨论,它在结束时也会输出一个数字。此数字称为“返回码”,如果为 0,则表示该命令在执行期间未遇到任何问题。如果是任何其他数字,即使命令完成,也意味着某些地方出错了。 (编辑:源码网) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |