มีดังต่อไปนี้ในหนึ่งในฟังก์ชั่นเปลือกของฉัน:
function _process () {
awk -v l="$line" '
BEGIN {p=0}
/'"$1"'/ {p=1}
END{ if(p) print l >> "outfile.txt" }
'
}
ดังนั้นเมื่อเรียกว่าเป็น_process $arg
, $arg
ได้รับการส่งผ่านเป็น$1
และนำมาใช้เป็นรูปแบบการค้นหา มันทำงานได้ด้วยวิธีนี้เพราะเชลล์ขยาย$1
แทนรูปแบบ awk! นอกจากนี้ยังl
สามารถนำมาใช้ภายในโปรแกรม awk -v l="$line"
ถูกประกาศด้วย ทุกอย่างดี
เป็นไปได้หรือไม่ที่จะให้รูปแบบการค้นหาเป็นตัวแปร
การติดตามจะไม่ทำงาน
awk -v l="$line" -v search="$pattern" '
BEGIN {p=0}
/search/ {p=1}
END{ if(p) print l >> "outfile.txt" }
'
ในฐานะ awk จะไม่ตีความ/search/
ว่าเป็นตัวแปร แต่เป็นตัวอักษรแทน