¿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}

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.

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.

Al usar nuestro sitio, usted reconoce que ha leído y comprende nuestra Política de Cookies y Política de Privacidad.
Licensed under cc by-sa 3.0 with attribution required.