Que fait l'opérateur «:» (deux-points) dans une expansion de variable bash: VAR = $ {TEMP: 3}?

12

Quelle est la signification de la ligne suivante dans une variable en bash?

VAR=${TEMP:3}
Karan Shah
la source
1
@chaos Veuillez ne pas modifier la question pour qu'elle corresponde mieux à votre réponse ;-).
Pilot6
@ Pilot6 Je n'ai pas changé le sens. Ou est-ce que je comprends quelque chose de mal? Je l'ai fait mieux pour trouver (titre) et plus lisible .. BTW : a aussi d'autres significations, c'est une commande intégrée bash, par exemple. Je voulais différer de cela, car la question n'est évidemment pas à ce sujet. L'utilisateur signifie l' :opérateur dans un nom de variable. Je suis désolé, je ne veux pas ennuyer quelqu'un, mais votre retour en arrière n'a aucun sens et devrait être inversé, mais je ne veux pas de guerre d'édition ici. De plus, il est spécifique à bash et aux scripts, alors pourquoi supprimer ces balises?
chaos
Vous avez supprimé TEMPet les VARvariables et ils ont changé la question de la manière que les autres réponses ont perdu le sens.
Pilot6
@ Pilot6 Dans ma réponse, je ne fais pas référence à une VARvariable. Mais, cependant, vous êtes libre de changer cette chose en arrière. Je voulais rendre la question plus générale, moins précise. Il n'a jamais été conçu pour saboter d'autres réponses.
chaos
2
@SnakeDoc non, c'est bien sur le sujet
muru

Réponses:

15

Il s'agit d' une extension variable et fonctionne comme ceci (notez que c'est uniquement bashet kshspécifique et ne fonctionnera pas dans un shell POSIX):

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

  • ${var:pos}signifie que la variable varest développée, à partir de l'offset pos.
  • ${var:pos:len}signifie que la variable varest développée, en commençant par le décalage posavec la longueur len.
le chaos
la source
Woks zshaussi
kos
2
@kos Cela ne vaut pas la peine d'être mentionné, car tout fonctionne dans zsh=) J'ai fait un script de régime zshet perdu 10 kg en 1 semaine.
chaos
zshà coup sûr vous rend plus stupide à taper des chemins lorsque vous ne l'utilisez pas :)
kos
1
@kos Hehe, c'est un peu comme jquery: meta.stackexchange.com/a/19492
chaos
1
Ha, j'adore la façon dont la seule réponse essayant de vraiment répondre à la question a obtenu -2 à cause de "pas assez de jQuery"! :)
kos
2

Cet opérateur coupe les 3 premiers caractères de la variable TEMPet affecte le reste à la variable VAR.

Pilot6
la source