ฉันมีสคริปต์ทุบตีที่มีฟังก์ชั่นสองทางแยกทั้งหมดเขียนลงในบันทึก เมื่อทั้งคู่เสร็จสิ้นแล้วฉันต้องการลบบันทึกนี้
ปัญหาที่ฉันมีอยู่processFinishCount
ก็คือมันไม่เคยมากกว่าหนึ่ง กระบวนการที่แยกแต่ละอันจะจับสำเนาของตัวแปรที่ใช้ร่วมกันและการเพิ่มขึ้นของสำเนานั้นเมื่อเรียกใช้delete_log
หรือไม่
ฉันจะแน่ใจได้อย่างไรว่าตัวแปรจะเพิ่มขึ้นอย่างเหมาะสม?
processFinishCount=0
delete_log()
{
let processFinishCount++
if ["$processFinishCount" == 2]; then
rm log.txt
else
echo `$processFinishCount task(s) finished" >> log.txt
fi
}
function_one()
{
...
delete_log
}
function_two()
{
...
delete_log
}
function_one &
function_two &
ตัวแปรคือ processFinishCount แต่คำสั่ง if มี processCount
—
jaychris
ตัวแปรโกลบอลยังเป็น 0 เมื่อเกิดส้อมขึ้น ดังนั้นกระบวนการที่แยกกันจะเริ่มต้นด้วย 0 และจะเพิ่มขึ้นเป็น 1 ทางออกหนึ่งคือการนับในไฟล์หรือมีไฟล์สถานะสำหรับแต่ละกระบวนการแยกและทดสอบการมีอยู่ของมัน
—
jaychris
@ Jaychris ความแตกต่างของตัวแปรเป็นเพียงการพิมพ์ผิด <br/> นั่นคือสิ่งที่ฉันได้สรุปแล้วเกิดขึ้น ไฟล์ภายนอกเป็นโซลูชันที่ถูกต้อง ฉันจะลองดูเมื่อฉันกลับไปทำงานในวันจันทร์
—
James Webster