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 $nowgeç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 ( $1vb.) 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 .