3 Stimmen

Wie definiert man eine auto-update $DATE Variable in der Bash?

Wenn ich eine Datei sichere, füge ich ihr einen Zeitstempel hinzu.

Zum Beispiel:

$ DATE=$(date +%F)
$ cp file{,.$DATE.bk}
$ ls
file  file.2012-06-20.bk

Es gibt eine Bash-Variable RANDOM Jedes Mal, wenn ich ein Echo auslöse, erhalte ich andere Werte:

$ echo $RANDOM
20511
$ echo $RANDOM
12577
$ echo $RANDOM
32433

Wie kann ich eine derartige Variable definieren? DATE ?

3voto

Alexander Punkte 23074

Sie könnten die Befehlsanweisung festhalten und sie bei der Verwendung auswerten.

$ DATE="date +%F"
$ echo $DATE
date +%F
$ echo `$DATE`
2012-06-20

3voto

tripleee Punkte 155951

Sie gehen das Problem von der falschen Seite an. Schreiben Sie ein Skript, das ein Backup erstellt.

#!/bin/sh
for f; do
    cp "$f" "$f.$(date +%F).bk"
done

Dies ist einfach genug, um als eine Funktion in Ihrem .profile wenn Sie Ihr Haus nicht verschmutzen wollen $HOME/bin mit im Grunde nur einem Einzeiler.

2voto

ormaaj Punkte 5809

Die Bash hat keine solche Funktion. Sie sollten die Funktion von ksh93 verwenden. Disziplinarfunktionen wenn Sie Getter/Setter/Properties benötigen und generell alles, was OO erfordert.

#!/usr/bin/env ksh

function DATE.get {
    .sh.value=$(printf '%(%F)T')
}

cp file{,".${DATE}.bk"}

Mir ist keine andere Shell bekannt, die dies kann, außer vielleicht über ihre jeweiligen ladbaren Erweiterungsschnittstellen.

1voto

Dennis Williamson Punkte 322329

Die Bash hat eine Variable, die automatisch aktualisiert wird und die Anzahl der Sekunden seit dem Start der Shell enthält.

Sie können den Wert einstellen und die Aktualisierung beginnt mit dieser Basis. Der Nachteil ist, dass ein Epochen-Sekunden-Zeitstempel-Format verwendet wird. Sie können verwenden date um es zurück zu konvertieren.

Hier ist eine Demo:

$ bash
$ echo "$SECONDS"
5
$ date +%s; SECONDS=$(date +%s); echo "$SECONDS"
1340191083
1340191083
$ sleep 10
$ date +%s; echo "$SECONDS"
1340191097
1340191097
$ date -d "@$SECONDS"
Wed Jun 20 06:18:24 CDT 2012
$ date -d "@$SECONDS" +%F
2012-06-20

Die zusätzlichen Sekunden sind auf die Startzeit der Bash und die Zeit zurückzuführen, die für die Eingabe der Befehle benötigt wird.

$ bash -c 'echo $SECONDS'
0

0voto

Ignacio Vazquez-Abrams Punkte 735200

Sie müssen den Bash-Quellcode bearbeiten, um ihn zur Verfügung zu stellen. Aber stellen Sie sicher, dass Sie wissen, in welchem Format jeder sein Datum haben möchte, bevor Sie das tun.

CodeJaeger.com

CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.

Powered by:

X