Frage

Cygwin user hier (obwohl, wenn es eine geeignete Lösung, die ich will tragen Sie es in K/Ubuntu, das ich auch verwenden).

Ich habe eine erfreuliche Nachricht in meinem .bashrc, die wie folgt aussieht:

SAD=(`date +%A-%B-%d-%Y`)
DUB=(`date -u +%k:%M`)
printf "Today's Date is: ${SAD}.\n"
printf "Dublin time is now ${DUB}. (24-Hour Clock)\n"

Nach zahlreichen versuche, die Leerzeichen in der variable TRAURIG, oben, gab ich nach und Bindestriche verwendet.Aber ich bin, verständlicherweise, nicht zufrieden mit diesem band-aid-Lösung.Das problem, soweit ich mich erinnere, war, dass jedes mal, wenn ich versuchte, mit quoted-space, \s oder eine ähnliche Flucht tag, zusammen mit der Variablen aufgelistet, die im entsprechenden Abschnitt der GNU-manpage für Datum, die variable für Jahr wurde entweder ignoriert oder hat einen Fehler zurückgegeben.Was ich tun nicht wollen zu tun ist Rückgriff auf die vollständige Zeichenfolge zurückgegeben durch Datum, sondern halten Sie die Reihenfolge, in der ich Dinge in den obigen code.

Während ich dies Schreibe, fällt mir auf, dass die Festlegung des IFS um diesen code für die Begrüßung kann funktionieren, sofern ich es zurück auf die Standardwerte danach (der oben erscheint in den Zeilen 13-17 einer 68-Linie .bashrc).Aber ich kann mich nicht erinnern, wie, das zu tun, noch bin ich sicher, dass es funktionieren würde.

Allgemein gesprochen, .bashrc-Dateien sind in der gültigen BASH-syntax, nicht wahr?Mine sicherlich ähneln sich die Skripte habe ich entweder selbst getestet oder aus anderen Quellen.Alles, was ich bin fehlt, nehme ich an, ist der code für das setzen und löschen Sie das Feld Trennzeichen um diese Meldung zu blockieren.

Kein Zweifel, jeder, der kommt mit einer Lösung zu tun einen gefallen, nicht nur mich, sondern auch für alle anderen relativen Neulinge auf dem Net, die Ihre ersten (oder dreizehnten durch siebzehnten) Schritte in die Welt der shell-scripting.

BZT

War es hilfreich?

Lösung

Putting

SAD=$(date "+%A %B %d %Y")
DUB=$(date -u +%k:%M)
echo "Today's Date is: ${SAD}."
echo "Dublin time is now ${DUB}. (24-Hour Clock)"

in meinem .bash_profile druckt

Today's Date is: Thursday February 18 2010.
Dublin time is now 12:55. (24-Hour Clock)

Ich denke, das ist, was du willst.

Andere Tipps

das Problem ist Ihre Array-Deklaration.

SAD=(date +%A-%B-%d-%Y) nur bedeutet, dass Sie die Zeichenfolge "date" als Element setzen 0, und "+% A-% B-% d-% Y" als Element 1 selbst sehen

$ SAD=(date +%A-%B-%d-%Y)  #<-- this is an array declaration
$ echo ${SAD[0]}
date
$ echo ${SAD[1]}
+%A-%B-%d-%Y

Wenn Sie den Wert von „date“ Befehl wollen in einer Variablen, die Verwendung $(..) sein, zB

$ SAD=$(date +%A-%B-%d-%Y)
$ echo ${SAD}
Thursday-February-18-2010

Räume zu erhalten, müssen Sie das Argument date zitieren, so dass es eine einzelne Saite ist. Sie erklärt auch fälschlicherweise SAD und DUB als Arrays, wenn das, was Sie wirklich gemeint zu tun war, zu bewerten. Versuchen Sie folgendes:

[/tmp]> $(date "+%A %B %d, %Y")
Thursday February 18, 2010

date +%A\ %B\ %d\ %Y

Ich fand die Kombination, die funktioniert:
SAD=$(date "+%A %B %d %Y")
echo $SAD
Donnerstag, 18. Februar 2010

Noch ein weiteres Beispiel, wenn:

  1. Es zahlt sich aus eine Frage zu stellen
  2. Es hilft zu wissen, wo sich Ihre doppelten Anführungszeichen.
    Datum offensichtlich nicht weiß, zitiert von Raum, aber Bash hat, so
    es ist eine Frage der "whispering in das Rechte Ohr."

Danke ghostdog74.

BZT

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top