测试是否没有给出位置参数的惯用方法?

hel*_*hod 5 parameters bash idioms command-line-arguments conditional-statements

如果没有给出位置参数,在 Bash 中测试最惯用的方法是什么?有很多方法可以检查这一点,我想知道是否有一种首选方法。

一些方法是:

((! $# )) # check if $# is 'not true'
(($# == 0)) # $# is 0
[[ ! $@ ]] # $@ is unset or null
Run Code Online (Sandbox Code Playgroud)

小智 8

对我来说,经典的方式是:

[[ $# -eq 0 ]]
Run Code Online (Sandbox Code Playgroud)

  • `[[` 不是一个内置函数,它是一个关键字。对比 `type [` 和 `type [[`。这意味着它在命令行扩展中较早地被询问,以及为什么,例如,您不需要用嵌入的空格引用变量。 (3认同)
  • 实际上,`[` 也是一个 bash 内置函数(覆盖 /bin/[ ),所以它们的速度应该差不多。最大的区别是 `[[ ... ]]` 避免了一些解析字符串的复杂性,这在此处不适用。 (2认同)