什么是双冒号::在shell脚本中?

时间:2017-06-15 03:34:19

标签: bash coding-style

shell脚本中的双冒号::是什么?喜欢这篇剧本:

function guess_built_binary_path {
  local hyperkube_path=$(kube::util::find-binary "hyperkube")
  if [[ -z "${hyperkube_path}" ]]; then
    return
  fi
  echo -n "$(dirname "${hyperkube_path}")"
}

我在这里找到了它:

https://github.com/kubernetes/kubernetes/blob/master/hack/local-up-cluster.sh

3 个答案:

答案 0 :(得分:12)

::只是功能名称 命名约定 。是一种编码风格,例如snake_caseCamelCase

shell样式中函数名称的约定通常是:

  

小写,带下划线以分隔单词。独立的图书馆   用::。在函数名称后面需要括号。关键字   函数是可选的,但必须始终使用   项目

您可以查看here

答案 1 :(得分:1)

没什么,这些冒号显然属于命令名称的一部分。您可以通过在名称中创建并运行带有:的命令来验证自己。默认情况下,shell会自动显示它们,并且它们完全合法。

答案 2 :(得分:1)

虽然看起来Bash允许将冒号放在函数名中,this behaviour is not standardized by POSIX

函数名称应包含the portable set的下划线,数字和字母。