Аргументи командного рядка Shell доступні через $1
(перший), $n
(n-й) або $*
(всі аргументи), тому ваш сценарій повинен запускатися:
#!/bin/bash
if [ $# -ne 1 ]; then
echo $0: usage: myscript name
exit 1
fi
name=$1
Тепер аргумент імені доступний із сценарію як $name
.
Щоб отримати позначку часу, використовуйте date(1)
команду та надайте їй специфікатор формату, щоб він створював потрібний формат:
now=$(date +%Y%m%d%H%M%S)
Тепер $now
містить поточну дату та час.
Таким чином, ви можете створити свій файл журналу таким чином:
logfile=/path/to/log/file/mylogfile.$now
echo "[$name]=[$now]" >> $logfile
Вам краще використовувати функцію оболонки для реєстрації повідомлень, оскільки це буде простіше у використанні:
function logit
{
now=$(date +%Y%m%d%H%M%S)
echo "$now: $*" >> $logfile
}
Зауважте, що функції оболонки отримують доступ до власних аргументів так само, як і сценарій (через $1
тощо)
Тож початковий сценарій виглядає приблизно так:
#!/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
(зверніть увагу на те, що файл журналу не в тому точному форматі, який ви вказали; він у кращому форматі із позначкою часу на початку кожного рядка).
[[ -n "$name" ]]
роблять.