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}

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.

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.

Ao utilizar nosso site, você reconhece que leu e compreendeu nossa Política de Cookies e nossa Política de Privacidade.
Licensed under cc by-sa 3.0 with attribution required.