¿Qué significa el operador ":" (dos puntos) en una expansión de variable bash: VAR = $ {TEMP: 3}?

12

¿Cuál es el significado de la siguiente línea en una variable en bash?

VAR=${TEMP:3}
Karan Shah
fuente
1
@chaos No edite la pregunta para que coincida mejor con su respuesta ;-).
Pilot6
@ Pilot6 No he cambiado el significado. ¿O entiendo algo mal? Lo hice mejor para encontrar (título) y más legible. Por cierto, : también tiene otros significados, es un comando bash incorporado, por ejemplo. Quería diferir de eso, porque la pregunta obviamente no es sobre eso. Lo que el usuario quiere decir es el :operador dentro de un nombre de variable. Lo siento, no quiero molestar a alguien, pero tu retroceso no tiene sentido y debería revertirse, pero no quiero una guerra de edición aquí. Además, es específico de bash y scripts, ¿por qué eliminar esas etiquetas?
caos
Ha retirado TEMPy VARvariables, y cambió la cuestión de la forma en que otras respuestas perdido el sentido.
Pilot6
@ Pilot6 En mi respuesta no me refiero a una VARvariable. Pero, sin embargo, eres libre de cambiar esa cosa. Quería hacer la pregunta más general, menos específica. Nunca tuvo la intención de sabotear otras respuestas.
caos
2
@SnakeDoc no, está bien sobre el tema
muru

Respuestas:

15

Esta es una expansión variable y funciona así (observe que esto es único bashy kshespecífico y no funcionará en un shell POSIX):

$ x=1234567890
$ echo ${x:3}
4567890
$ echo ${x:7}
890
$ echo ${x:3:5}
45678

  • ${var:pos}significa que la variable varse expande, comenzando desde el desplazamiento pos.
  • ${var:pos:len}significa que la variable varse expande, comenzando desde el desplazamiento poscon la longitud len.
caos
fuente
Woks zshtambién
kos
2
@kos No vale la pena mencionarlo, porque todo funciona en zsh=) Hice un script de dieta zshy perdí 10 kg en 1 semana.
caos
zshseguro que te hace más tonto al escribir caminos cuando no lo estás usando :)
kos
1
@kos Hehe, es un poco como jquery: meta.stackexchange.com/a/19492
caos
1
¡Ja, me encanta cómo la única respuesta que intentó realmente responder a la pregunta obtuvo -2 debido a "no suficiente jQuery"! :)
kos
2

Este operador corta los primeros 3 caracteres de la variable TEMPy asigna el resto a la variable VAR.

Piloto6
fuente