อาร์กิวเมนต์บรรทัดคำสั่งของเชลล์สามารถเข้าถึงได้ผ่านทาง$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" ]]
ส่วนใดทำประโยชน์