Se puede acceder a los argumentos de la línea de comandos de Shell a través de $1
(el primero), $n
(el enésimo) o $*
(todos los argumentos), por lo que su script debe comenzar:
#!/bin/bash
if [ $# -ne 1 ]; then
echo $0: usage: myscript name
exit 1
fi
name=$1
Ahora se puede acceder al argumento de nombre desde el script como $name
.
Para obtener la marca de tiempo, use el date(1)
comando y asígnele un especificador de formato para que produzca el formato que desea:
now=$(date +%Y%m%d%H%M%S)
Ahora $now
contiene la fecha y hora actuales.
Para que pueda crear su archivo de registro así:
logfile=/path/to/log/file/mylogfile.$now
echo "[$name]=[$now]" >> $logfile
Es mejor usar una función de shell para registrar sus mensajes, ya que será más fácil de usar:
function logit
{
now=$(date +%Y%m%d%H%M%S)
echo "$now: $*" >> $logfile
}
Tenga en cuenta que las funciones de shell acceden a sus propios argumentos de la misma manera que el script (a través de $1
etc.)
Entonces el guión inicial se ve así:
#!/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
(tenga en cuenta que el archivo de registro no está en el formato exacto que especificó; está en uno mejor con la marca de tiempo al comienzo de cada línea).
[[ -n "$name" ]]
está haciendo la parte.