Các đối số dòng lệnh Shell có thể truy cập thông qua $1
(đầu tiên), $n
(thứ n) hoặc $*
(tất cả các đối số), vì vậy tập lệnh của bạn sẽ bắt đầu:
#!/bin/bash
if [ $# -ne 1 ]; then
echo $0: usage: myscript name
exit 1
fi
name=$1
Bây giờ đối số tên có thể truy cập từ tập lệnh như $name
.
Để lấy dấu thời gian, hãy sử dụng date(1)
lệnh và cung cấp cho nó một trình xác định định dạng để nó tạo ra định dạng bạn muốn:
now=$(date +%Y%m%d%H%M%S)
Bây giờ $now
chứa ngày và thời gian hiện tại.
Vì vậy, bạn có thể tạo tệp nhật ký của mình như vậy:
logfile=/path/to/log/file/mylogfile.$now
echo "[$name]=[$now]" >> $logfile
Bạn nên sử dụng chức năng shell để ghi nhật ký tin nhắn của mình vì nó sẽ dễ sử dụng hơn:
function logit
{
now=$(date +%Y%m%d%H%M%S)
echo "$now: $*" >> $logfile
}
Lưu ý rằng các hàm shell truy cập các đối số của riêng chúng giống như tập lệnh (thông qua $1
v.v.)
Vì vậy, kịch bản ban đầu trông như thế này:
#!/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
(lưu ý tệp nhật ký không ở định dạng chính xác mà bạn đã chỉ định; nó ở dạng tốt hơn với dấu thời gian ở đầu mỗi dòng).
[[ -n "$name" ]]
phần đó đang làm gì.