Shell komut satırı argümanlarına $1
(ilk), $n
(nth) veya $*
(tüm argümanlar) yoluyla erişilebilir , bu nedenle komut dosyanızın başlaması gerekir:
#!/bin/bash
if [ $# -ne 1 ]; then
echo $0: usage: myscript name
exit 1
fi
name=$1
Şimdi isim argümanına betiğinden şu şekilde erişilebilir $name
.
Zaman damgasını almak için date(1)
komutu kullanın ve istediğiniz formatı üretecek şekilde bir format belirteci verin:
now=$(date +%Y%m%d%H%M%S)
Şimdi $now
geçerli tarih ve saati içerir.
Böylece günlük dosyanızı bu şekilde oluşturabilirsiniz:
logfile=/path/to/log/file/mylogfile.$now
echo "[$name]=[$now]" >> $logfile
İletilerinizi kullanmak daha kolay olacağından, oturum açmak için bir kabuk işlevi kullanmaktan daha iyidir:
function logit
{
now=$(date +%Y%m%d%H%M%S)
echo "$now: $*" >> $logfile
}
Kabuk işlevlerinin kendi argümanlarına komut dosyasıyla ( $1
vb.) Aynı şekilde eriştiğini unutmayın .
Böylece ilk komut dosyası şöyle görünür:
#!/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
(günlük dosyasının belirttiğiniz biçimde olmadığına dikkat edin; her satırın başında zaman damgasıyla daha iyi bir dosyadadır).
[[ -n "$name" ]]
parçanın ne yaptığını bilmek faydalı olacaktır .