Переменная awk FILENAME дает имя текущего обрабатываемого файла (или '-', если stdin).Однако это не доступно в блоке BEGIN, но вы можете использовать ARGV [1] вместо этого (при условии, что вы передаете только одно имя файла):
#!/bin/awk -f
BEGIN {
cmd = "./myscript.py '\"%s20s\"' " ARGV[1]
print cmd
cmd | getline var
print var
}
Сценарий python (py3), который я использовал для тестирования,:
#!/usr/bin/python
import sys
print(sys.argv)
Итак, я получаю следующий вывод:
/home/user1> runit.awk afile
./myscript.py "%s20s" afile
['./myscript.py', '"%s20s"', 'afile']