Cosa fa l'operatore “:” (due punti) in un'espansione della variabile bash: VAR = $ {TEMP: 3}?


12

Qual è il significato della seguente riga in una variabile in bash?

VAR=${TEMP:3}

1
@chaos Non modificare la domanda in modo che corrisponda meglio alla tua risposta ;-).
Pilota

@ Pilot6 Non ho cambiato il significato. O capisco qualcosa di sbagliato? Ho reso più facile la ricerca (titolo) e più leggibile. BTW : ha anche altri significati, ad esempio è un comando incorporato bash. Volevo differire da quello, perché la domanda ovviamente non riguarda questo. Ciò che l'utente intende è l' :operatore all'interno di un nome di variabile. Mi dispiace, non voglio infastidire qualcuno, ma il tuo rollback non ha senso e dovrebbe essere invertito, ma non voglio una guerra di modifica qui. Inoltre è bash e scripting specifici, quindi perché rimuovere quei tag?
caos,

Hai rimosso TEMPe VARvariabili e modificato la domanda nel modo in cui altre risposte hanno perso significato.
Pilota

@ Pilot6 Nella mia risposta non mi riferisco a una VARvariabile. Ma, comunque, sei libero di cambiare quella cosa indietro. Volevo rendere la domanda più generale, meno specifica. Non ha mai avuto lo scopo di sabotare altre risposte.
caos,

2
@SnakeDoc no, va benissimo sull'argomento
muru,

Risposte:


15

Questa è un'espansione variabile e funziona così (si noti che è unica bashe kshspecifica e non funzionerà in una shell POSIX):

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

  • ${var:pos}significa che la variabile varviene espansa, a partire dall'offset pos.
  • ${var:pos:len}significa che la variabile varviene espansa, a partire dall'offset poscon la lunghezza len.

Woks in zshtoo
kos

2
@kos Non vale la pena menzionare, perché tutto funziona in zsh=) Ho fatto uno script dietetico zshe ho perso 10 kg in 1 settimana.
caos,

zshti rende sicuramente più stupido quando digiti i percorsi quando non lo usi :)
kos,

1
@kos Hehe, è un po 'come jquery: meta.stackexchange.com/a/19492
caos

1
Ah, adoro come l'unica risposta che ha tentato di rispondere davvero alla domanda abbia -2 per "non abbastanza jQuery"! :)
kos,


2

Questo operatore interrompe i primi 3 caratteri della variabile TEMPe assegna il resto alla variabile VAR.

Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.