Ich bin neu in der Programmierung von Bash-Skripten.
Ich möchte ein Bash-Skript 'deploymLog' implementieren, das als Eingabe ein String-Argument (Name) akzeptiert.
[root@localhost Desktop]# ./deploymLog.sh name
Hier möchte ich das Zeichenfolgenargument (Name) über die Befehlszeile übergeben
Als ersten Schritt muss ich den aktuellen Zeitstempel zusammen mit dieser Eingabezeichenfolge an eine Protokolldatei anhängen, z. B. Logone.txt
im aktuellen Verzeichnis im folgenden Format:
[name]=[System time timestamp1]
Wie ist das möglich?
[[ -n "$name" ]]
teil macht.Auf Shell-Befehlszeilenargumente kann über
$1
(das erste),$n
(das n-te) oder$*
(alle Argumente) zugegriffen werden. Daher sollte Ihr Skript gestartet werden:Jetzt ist das Argument name über das Skript als zugänglich
$name
.Verwenden Sie zum Abrufen des Zeitstempels den
date(1)
Befehl und geben Sie ihm einen Formatbezeichner, damit das gewünschte Format erstellt wird:$now
Enthält jetzt das aktuelle Datum und die Uhrzeit.So können Sie Ihre Protokolldatei erstellen:
Sie sollten eine Shell-Funktion verwenden, um Ihre Nachrichten zu protokollieren, da dies einfacher zu verwenden ist:
Beachten Sie, dass Shell-Funktionen auf die gleichen Weise wie das Skript (über
$1
usw.) auf ihre eigenen Argumente zugreifen .Das erste Skript sieht also so aus:
(Beachten Sie, dass die Protokolldatei nicht genau das von Ihnen angegebene Format hat. Es ist besser, wenn der Zeitstempel am Anfang jeder Zeile steht.)
quelle
starte "bash deploymLog.sh whatever" und du hast x.log mit
quelle
name=$1
. Die Variable $ name wird nie verwendet, da Sie nur den String 'name' wörtlich ausgeben.name="$1"