Argumenty linii poleceń powłoki są dostępne za pośrednictwem $1
(pierwszego), $n
(n-tego) lub $*
(wszystkich argumentów), więc skrypt powinien się uruchomić:
#!/bin/bash
if [ $# -ne 1 ]; then
echo $0: usage: myscript name
exit 1
fi
name=$1
Teraz argument nazwy jest dostępny ze skryptu jako $name
.
Aby uzyskać znacznik czasu, użyj date(1)
polecenia i nadaj mu specyfikator formatu, aby wygenerował żądany format:
now=$(date +%Y%m%d%H%M%S)
Teraz $now
zawiera aktualną datę i godzinę.
Możesz więc utworzyć plik dziennika w ten sposób:
logfile=/path/to/log/file/mylogfile.$now
echo "[$name]=[$now]" >> $logfile
Lepiej jest używać funkcji powłoki do rejestrowania wiadomości, ponieważ będzie łatwiejsza w użyciu:
function logit
{
now=$(date +%Y%m%d%H%M%S)
echo "$now: $*" >> $logfile
}
Zauważ, że funkcje powłoki mają dostęp do własnych argumentów w taki sam sposób, jak skrypt (przez $1
itp.)
Tak więc początkowy skrypt wygląda następująco:
#!/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
(zwróć uwagę, że plik dziennika nie ma dokładnie określonego formatu; jest lepszy, z datownikiem na początku każdej linii).
[[ -n "$name" ]]
robi ta część.