bash - Bash 条件句中感叹号是在括号内还是在括号外有关系吗?

标签 bash shell

看来你可以将否定条件写成

if ! [[ ... ]]; then

if [[ ! ... ]]; then

假设操作的语义相同,是否有理由选择一种或另一种方法? (即,很明显,在第二个版本中,如果 ... 是一个复合语句,并且您没有小心地将表达式正确分组,那么您最终可能只会否定表达式的第一部分.)

最佳答案

不,这完全取决于您自己的喜好。接下来的命令是完全等价的:

if [[ $x -ne $y ]]; then
if ! [[ $x -eq $y ]]; then
if [[ ! $x -eq $y ]]; then

您的偏好可能基于不同的 if 条件:

  • if [[ $x -ne $y ]]; then:简单的比较,不像普通的变量比较那样复杂。
  • 如果! [[ $x -eq $y ]]; then:假设您有一个复杂的 if 条件,它可能是某个函数而不是 $x -eq $y 的结果。
  • 如果 [[ ! $x -eq $y ]]; then:不需要,使用 first 或 second,具体取决于您拥有的 if 条件类型。我永远不会使用这个!

关于bash - Bash 条件句中感叹号是在括号内还是在括号外有关系吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46043257/

相关文章:

bash - Git 钩子(Hook)。如何从用户输入中读取变量?

python - 如何用 bash 脚本杀死 python 脚本

linux - 用于 behat 错误的 ant 构建脚本

regex - linux/unix 中的模式匹配或 RegEx 手册页?

C: main() 返回一个数组总是等于 56

java - 将带空格的字符串从 shell 传递到 java

linux - While 循环中的并行处理

linux - ssh 命令输出以保存在 shell 脚本中的文本文件中

java - ssh后在bash脚本中运行两个java程序

linux - 一次运行脚本两次