awk doesn't work that way. Giving awk an argument of '10' tells it to open a file named '10'. Positional parameters are arguments or filenames, period.
If ARGV[1] doesn't work in your awk, then your awk doesn't have ARGV.
Why do you need this? Couldn't you make a simple wrapper script to do this for you, converting shell arguments into a -v argument, instead of cramming arguments where they don't belong on awk's commandline?
I had a test yesterday and one of the question was: "Write an awk script that simulate the bash command tail, where the number of lines to print is give as:
cat file.txt | awk -f script.awk 10
"
That's a particularly awful way to do it since it will fail instantly, trying to open the file '10'. You'll have to cram everything into awk's BEGIN section, and exit at the end of it, so it doesn't try to open a file named 10. You'd do a while(getline<"/dev/stdin") loop. ARGV[3] would be the number of lines if your particular version of awk even has ARGV.
tail is not a "bash command", either. bash has some builtins and tail is not one of them. tail is an external utility that can be used with any shell or with no shell at all. It has nothing to do with bash whatsoever. This is an increasingly common and most vexing misconception because people keep trying to fix bash when the problem is not having installed the thing they're looking for in the first place :wall:
And of course that remains a useless use of cat. I've been wondering who keeps teaching this to people. :wall: