Invoking a script, which has an awk shebang, with parameters (vars)

后端 未结 4 1960
梦毁少年i
梦毁少年i 2021-01-03 19:06

I have an awk script that I have defined thus:

#!/usr/bin/env awk
BEGIN { if (!len) len = 1; end = start + len }
{ for (i = start; i < end; i++) { print $         


        
4条回答
  •  旧时难觅i
    2021-01-03 19:55

    env is the easiest way to handle this problem:

    #!/usr/bin/env -S awk -f
    

    to add more options, and to ensure no interference with your arguments, and awk's arguments:

    #!/usr/bin/env -S awk -F: -f ${_} --
    BEGIN {
        # delete argv[1], which == ENVIRON[_]
        delete ARGV[1]
    } # rest of my awk program
    

    as env has a POSIX standard, this shbang should get you around the difficulties of non-standard shbang implementations across unixen.

    EDIT

    after having written this I realized that '-S' is a non-POSIX compliant FreeBSD env extension. So shell wrapper is probably the way to go, unfortunate as that is.

提交回复
热议问题