staging.inyokaproject.org

Befehl ohne Zwischenschritte

Status: Gelöst | Ubuntu-Version: Kubuntu 22.04 (Jammy Jellyfish)
Antworten |

Umaash

Anmeldungsdatum:
7. Juni 2016

Beiträge: 123

Hallo,

Folgendes funktioniert wie erwartet:

1
2
3
$ Datum=$(date -I)
$ echo $Datum
2022-09-28
1
2
3
$ Jahr=${Datum:0:4}
$ echo $Jahr
2022

Nun möchte ich das ganze ohne Zwischenschritte machen:

1
2
$ echo ${$(date -I):0:4}
bash: ${$(date -I):0:4}: Falsche Substitution.

Wo ist der Fehler. Bzw. wie bringe ich das in eine einzige Zeile (Natürlich ohne &&)? Eine Antwort würde mich freuen. Besten Dank.

rklm Team-Icon

Projektleitung

Anmeldungsdatum:
16. Oktober 2011

Beiträge: 13242

Umaash schrieb:

Wo ist der Fehler.

Es gibt da keine Variable, die Du expandieren kannst.

Bzw. wie bringe ich das in eine einzige Zeile (Natürlich ohne &&)? Eine Antwort würde mich freuen. Besten Dank.

1
2
$ date +%Y
2022

rklm Team-Icon

Projektleitung

Anmeldungsdatum:
16. Oktober 2011

Beiträge: 13242

Und wenn Du mehrere Komponenten aus einem Zeitstempel extrahieren willst, kannst Du das so machen:

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
$ ts=$(date +%s)
$ date -d @$ts +%Y
2022
$ date -d @$ts +%M
08
$ date -d @$ts +%D
09/28/22
$ date -d @$ts +%s
1664384891
$ date -d @$ts +%s
1664384891

Umaash

(Themenstarter)

Anmeldungsdatum:
7. Juni 2016

Beiträge: 123

Besten Dank für Deine Antwort.

Dann habe ich wohl den folgenden Satz in meinem Lehrbuch miss interpretiert:

Bei der Befehlsersetzung können Sie die Standardausgabe eines Befehls so verwenden, als ob sie ein Variablenwert wäre.

Das habe ich dann so interpretiert, dass z.B. $(date -I) identisch verarbeitet wird wie eine Variable.

rklm Team-Icon

Projektleitung

Anmeldungsdatum:
16. Oktober 2011

Beiträge: 13242

Umaash schrieb:

Besten Dank für Deine Antwort.

Danichfür.

Dann habe ich wohl den folgenden Satz in meinem Lehrbuch miss interpretiert:

Bei der Befehlsersetzung können Sie die Standardausgabe eines Befehls so verwenden, als ob sie ein Variablenwert wäre.

Ja, das ist eine plausible Erklärung. ☺ Das Zitat bedeutet ja nur, dass Du so etwas echo "Ich habe einen $WERT" als auch so etwas echo "Das Datum ist $(date)" nutzen kannst. Aber es sagt nicht, dass du den Variablennamen durch einen beliebigen Wert ersetzen kannst.

Das habe ich dann so interpretiert, dass z.B. $(date -I) identisch verarbeitet wird wie eine Variable.

Die Variablenersetzung (also ${...}) braucht den Namen der Variable, die einen Wert speichert. In Deinem Beispiel taucht (besser: würde auftauchen, denn es geht ja nicht) an der Stelle ein Wert auf.

Umaash

(Themenstarter)

Anmeldungsdatum:
7. Juni 2016

Beiträge: 123

Danke. Ich denke jetzt habe ich es verstanden. 😀

Antworten |