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}

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.

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.

Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.