bash 命令末尾的' &&
'、' \
' 和 ' ' 是什么意思?-
特别是,我遇到了以下应该将公钥添加到 Ubuntu 的 aptitude 包管理器的行组合,这些字符在这里用于什么?
gpg --keyserver keyserver.ubuntu.com --recv 26C2E075 && \ gpg --export --armor 26C2E075 | sudo apt-key 添加 - && \ sudo apt-get 更新
bash 命令末尾的' &&
'、' \
' 和 ' ' 是什么意思?-
特别是,我遇到了以下应该将公钥添加到 Ubuntu 的 aptitude 包管理器的行组合,这些字符在这里用于什么?
gpg --keyserver keyserver.ubuntu.com --recv 26C2E075 && \ gpg --export --armor 26C2E075 | sudo apt-key 添加 - && \ sudo apt-get 更新
“&&”用于将命令链接在一起,以便当且仅当前一个命令没有错误退出(或者更准确地说,以返回码 0 退出)时运行下一个命令。
行尾的“\”本身是一种将行连接在一起的方法。所以以下两行:
处理方式与将行写入单行时完全相同:
“-”是没有特定 bash 函数的命令行参数。确切的处理方式取决于正在运行的命令(在本例中为 apt-key)。根据上下文,它通常用于表示“从标准输入而不是从文件中读取数据”,或“将行的其余部分作为数据而不是作为命令行参数处理”。
&& 是逻辑与:
&& 是一种表达逻辑与的方式,这意味着整个表达式只有在两边都为真时才为真。在逻辑上,只有当 P 和 Q 都为真时,整个陈述 (P&Q) 才为真。
因此,计算机通常将 P&Q 视为短路评估。因此,由于整个语句只有在 P 和 Q 都为真时才为真,所以如果 P 为假,则不评估语句Q。基本上计算机是懒惰的(高效的),如果他们没有 Q,就不会费心评估 Q。这也是逻辑 OR 的 True,请参阅上一个链接。
Bash 中 && 的三个上下文:
1) 对命令的退出状态使用短路评估:
每个命令都有一个退出状态。如果命令有错误,则它的退出状态为非零。因此,如果退出状态不为零,并且 && 用于将命令链接到一个语句中,则如果较早的命令的退出状态不为 0 (True),则不会评估(执行)后面的命令。这是因为短路评估。因此,如果您有:
如果 P 不为真,则不会执行 Q(如果 P 退出时的状态不是 0,则它不为真)。就像:
如果 configure 有错误,make 将不会被执行,这是不正确的。所以基本上, then 最终成为一种写 if then 语句的方式:
请记住,在大多数情况下,0 是错误的,但在退出状态时则不然。
2) && 可用于 Bash 内置的 [[ ]] 测试命令:
&& 也可以在 bash [[ ]] 的内置测试命令中使用,以与组合命令类似的方式组合表达式。只有当 && 的两个操作数(边)都为真时,整个测试操作才会为真,例如:
如果 $a 是 2 和 5 之间的整数(不包括 2 和 5),这是一种说法。
3)算术评估:
最后,&& 可以在算术评估中用作逻辑与。如果以下两个数字(逻辑与)都不为零,则返回 0,否则返回 1:
我认为您会更好地解释“真实”含义,含义是另一回事:)
\
是“转义字符”,它是 bash 中可用的三种引用机制之一: 这意味着如果您在一行的最后放置一个转义字符(“\”),您实际上是在转义紧随其后的新行字符(返回字符),从而具有“继续该行”的效果其他人已经在他们的回答中解释了我的 2 美分