Was bedeutet der Doppelpunkt (:) in einer Bash-Variablenerweiterung: VAR = $ {TEMP: 3}?

12

Was bedeutet die folgende Zeile in einer Variablen in bash?

VAR=${TEMP:3}
Karan Shah
quelle
1
@chaos Bitte bearbeite die Frage nicht so, dass sie besser zu deiner Antwort passt ;-).
Pilot6
@ Pilot6 Ich habe die Bedeutung nicht geändert. Oder verstehe ich etwas falsch? Ich habe es besser gemacht (title) zu finden und lesbarer zu machen. BTW : hat auch andere Bedeutungen, es ist zum Beispiel ein bash builtin Befehl. Ich wollte mich hiervon unterscheiden, da es sich offensichtlich nicht um eine Frage handelt . Was der Benutzer meint, ist der :Operator innerhalb eines Variablennamens. Es tut mir leid, ich möchte niemanden ärgern, aber Ihr Rollback macht keinen Sinn und sollte rückgängig gemacht werden, aber ich möchte hier keinen Schnittkrieg. Außerdem ist es bash- und scriptspezifisch. Warum also diese Tags entfernen?
Chaos
Sie haben eine Variable entfernt TEMPund VARdie Frage so geändert, dass andere Antworten ihre Bedeutung verloren haben.
Pilot6
@Pilot6 In meiner Antwort beziehe ich mich nicht auf eine VARVariable. Es steht Ihnen jedoch frei, dieses eine zurück zu ändern. Ich wollte die Frage allgemeiner und weniger spezifisch formulieren. Es sollte niemals andere Antworten sabotieren.
Chaos
2
@ SnakeDoc Nein, es ist zum Thema alles in Ordnung
muru

Antworten:

15

Dies ist eine variable Erweiterung und funktioniert folgendermaßen (beachten Sie, dass dies nur bashund kshspezifisch ist und in einer POSIX-Shell nicht funktioniert):

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

  • ${var:pos}bedeutet, dass die Variable varvom Offset an erweitert wird pos.
  • ${var:pos:len}bedeutet, dass die Variable varerweitert wird, beginnend mit dem Versatz posmit der Länge len.
Chaos
quelle
Woks in zshzu
kos
2
@kos Es ist nicht erwähnenswert, weil alles funktioniert in zsh=) Ich habe ein Diät-Skript in zshund 10 kg in 1 Woche verloren.
Chaos
zshMit Sicherheit wirst du dümmer bei der Eingabe von Pfaden, wenn du sie nicht verwendest :)
Kos
1
@kos Hehe, es ist ein bisschen wie jquery: meta.stackexchange.com/a/19492
Chaos
1
Ha, ich liebe es, wie die einzige Antwort, die versucht, die Frage wirklich zu beantworten, -2 bekam, weil "nicht genug jQuery"! :)
Kos
2

Dieser Operator schneidet die ersten 3 Zeichen der Variablen ab TEMPund weist den Rest der Variablen zu VAR.

Pilot6
quelle