O que o operador “:” (dois pontos) em uma expansão de variável bash: VAR = $ {TEMP: 3}?

12

Qual é o significado da seguinte linha em uma variável em bash?

VAR=${TEMP:3}
Karan Shah
fonte
1
@chaos Por favor, não edite a pergunta para corresponder melhor à sua resposta ;-).
Pilot6
@ Pilot6 Não mudei o significado. Ou entendo algo errado? Tornei mais fácil encontrar (título) e mais legível. BTW : também tem outros significados, é um comando interno do bash, por exemplo. Eu queria diferir disso, porque a pergunta obviamente não é sobre isso. O que o usuário quer dizer é o :operador dentro de um nome de variável. Sinto muito, não quero incomodar ninguém, mas sua reversão não faz sentido e deve ser revertida, mas não quero uma guerra de edição aqui. Além disso, é específico para bash e scripts. Por que remover essas tags?
6135 caos
Você removeu TEMPe VARvariáveis e mudou a questão da maneira que outras respostas perdeu o significado.
Pilot6
@ Pilot6 Na minha resposta, não me refiro a uma VARvariável. Mas, no entanto, você pode mudar isso de volta. Eu queria tornar a pergunta mais geral, menos específica. Nunca foi para sabotar outras respostas.
6135 caos
2
@SnakeDoc não, está no tópico certo #
muru

Respostas:

15

Isso é expansão variável e funciona assim (observe que isso é único bashe kshespecífico e não funcionará em um shell POSIX):

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

  • ${var:pos}significa que a variável varé expandida, iniciando no deslocamento pos.
  • ${var:pos:len}significa que a variável varé expandida, começando do deslocamento poscom o comprimento len.
caos
fonte
Woks zshtambém
kos
2
@kos Não vale a pena mencionar, porque tudo funciona em zsh=) Eu fiz um script de dieta zshe perdi 10kg em 1 semana.
6135 caos
zshcom certeza faz você mais burro em caminhos de digitação quando você não estiver usando-o :)
kos
1
@kos Hehe, é um pouco como jquery: meta.stackexchange.com/a/19492
caos
1
Ah, eu amo como a única resposta que realmente tentou responder à pergunta foi -2 por causa de "jQuery insuficiente"! :)
kos
2

Este operador corta os 3 primeiros caracteres da variável TEMPe atribui o restante à variável VAR.

Pilot6
fonte