在Bash条件中感叹号是在括号内还是在括号内是否重要?

时间:2017-09-04 19:46:48

标签: bash shell

似乎你可以写一个否定的条件

if ! [[ ... ]]; then

if [[ ! ... ]]; then

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

1 个答案:

答案 0 :(得分:8)

不,完全取决于您自己的偏好。下一个命令完全等效:

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

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

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