ใน bash $0
มีชื่อของสคริปต์ แต่ใน awk ถ้าฉันทำสคริปต์ชื่อ myscript.awk ด้วยเนื้อหาต่อไปนี้:
#!/usr/bin/awk -f
BEGIN{ print ARGV[0] }
และเรียกใช้มันจะพิมพ์ "awk" เท่านั้น นอกจากนี้ ARGV [i] กับ i> 0 ยังใช้สำหรับอาร์กิวเมนต์ของสคริปต์ในบรรทัดคำสั่งเท่านั้น ดังนั้นวิธีที่จะทำให้มันพิมพ์ชื่อของสคริปต์ในกรณีนี้ "myscript.awk"?
mawk
เป็นค่าเริ่มต้นบน Ubuntu เมื่อวันที่ 15.04 VM ของฉันเริ่มต้นคือawk
gawk
ในขณะที่ติดตั้ง mawk มันไม่ได้เป็นค่าเริ่มต้น
awk -f myscript.awk
ถ้าคุณเรียกมันว่าโดย อย่างไรก็ตามสิ่งนี้ไม่เกี่ยวข้องกับปัญหาที่เป็นปัญหา
awk
#!/usr/bin/awk -f
เชลล์สคริปต์เริ่มต้นด้วย#!/bin/sh
(หรือสิ่งที่คล้ายกัน)
awk -f file
และคุณสามารถดำเนินการได้โดยใช้