Auf Shell-Befehlszeilenargumente kann über $1
(das erste), $n
(das n-te) oder $*
(alle Argumente) zugegriffen werden. Daher sollte Ihr Skript gestartet werden:
#!/bin/bash
if [ $# -ne 1 ]; then
echo $0: usage: myscript name
exit 1
fi
name=$1
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=$(date +%Y%m%d%H%M%S)
$now
Enthält jetzt das aktuelle Datum und die Uhrzeit.
So können Sie Ihre Protokolldatei erstellen:
logfile=/path/to/log/file/mylogfile.$now
echo "[$name]=[$now]" >> $logfile
Sie sollten eine Shell-Funktion verwenden, um Ihre Nachrichten zu protokollieren, da dies einfacher zu verwenden ist:
function logit
{
now=$(date +%Y%m%d%H%M%S)
echo "$now: $*" >> $logfile
}
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:
#!/bin/bash
function logit
{
now=$(date +%Y%m%d%H%M%S)
echo "$now: $*" >> $logfile
}
if [ $# -ne 1 ]; then
echo $0: usage: myscript name
exit 1
fi
name=$1
now=$(date +%Y%m%d%H%M%S)
logfile=/path/to/log/file/mylogfile.$now
logit name = $name
(Beachten Sie, dass die Protokolldatei nicht genau das von Ihnen angegebene Format hat. Es ist besser, wenn der Zeitstempel am Anfang jeder Zeile steht.)
[[ -n "$name" ]]
teil macht.