¿Qué es el doble colon :: en los scripts de shell? como esta pieza de guión:

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}")"
}

Lo encontré aquí:

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

16
reachlin 15 jun. 2017 a las 06:34

3 respuestas

La mejor respuesta

:: es solo una Convención de nomenclatura para nombres de funciones . Es un estilo de codificación como snake_case o CamelCase

La convención para Nombres de funciones en el estilo de shell comúnmente es:

Minúscula, con guiones bajos para separar las palabras. Bibliotecas separadas con ::. Se requieren paréntesis después del nombre de la función. La función de palabra clave es opcional, pero debe usarse de manera consistente a lo largo de un proyecto.

Puede consultar aquí.

16
Mateusz Piotrowski 6 oct. 2017 a las 15:26

Aunque parece que Bash permite colocar dos puntos en los nombres de las funciones, este comportamiento no es estandarizado por POSIX.

Los nombres de las funciones deben consistir en guiones bajos, dígitos y letras de el conjunto portátil.

3
Mateusz Piotrowski 6 oct. 2017 a las 15:31

No es nada, estos dos puntos son parte de los nombres de los comandos aparentemente. Puede verificar usted mismo creando y ejecutando un comando con : en el nombre. El shell por defecto los escapará automáticamente y todo es perfectamente legal.

2
Mateusz Piotrowski 6 oct. 2017 a las 15:26