Os argumentos da linha de comando do Shell são acessíveis via $1
(o primeiro), $n
(o enésimo) ou $*
(todos os argumentos), portanto, seu script deve iniciar:
#!/bin/bash
if [ $# -ne 1 ]; then
echo $0: usage: myscript name
exit 1
fi
name=$1
Agora, o argumento do nome está acessível no script como $name
.
Para obter o registro de data date(1)
e hora, use o comando e especifique o formato para que ele produza o formato desejado:
now=$(date +%Y%m%d%H%M%S)
Agora $now
contém a data e hora atuais.
Então você pode criar seu arquivo de log assim:
logfile=/path/to/log/file/mylogfile.$now
echo "[$name]=[$now]" >> $logfile
É melhor usar uma função shell para registrar suas mensagens, pois será mais fácil usar:
function logit
{
now=$(date +%Y%m%d%H%M%S)
echo "$now: $*" >> $logfile
}
Observe que as funções do shell acessam seus próprios argumentos da mesma maneira que o script (via $1
etc.)
Portanto, o script inicial fica assim:
#!/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
(observe que o arquivo de log não está no formato exato que você especificou; está em um formato melhor com o registro de data e hora no início de cada linha).
[[ -n "$name" ]]
parte está fazendo.