RE: awk progfile
> What's happening?
1) $ awk '/Date/' respaldo
Runs awk with the program-text "/Date/" on the input-file respaldo. This
program is only a pattern. The default action is to print the entire line of
the input-file to the screen if the pattern matches.
2) $ cat respchk
$ awk -f respchk
This runs awk with the program-file respchk but without an input-file. The
respchk program-file consists of the pattern "/Date/ respaldo". respaldo is
interpreted as a variable here and because it's empty (by default), it
doesn't have an effect on the program. As there is no input-file specified,
awk 'hangs', that is, waits for input from stdin.
A program-file for the awk statement in 1) would only consist of "/Date/"
and you would specify the input-file on the command line:
3) $ cat respchk
$ awk -f respchk respaldo
With the "#!" line, assuming the path "/usr/bin/awk" is valid ($ which awk)
and respchk is executable ($ chmod +x respchk), this would look like
4) $ cat respchk
#! /usr/bin/awk -f
$ ./respchk respaldo
respchk is now the program and respaldo is the input-file again.
Hope this helps.
BTW: Can somebody give me a clue why awk is /usr/bin/awk in Debian (also
e.g., ksh) (and /bin/awk in most other systems I've seen)?
What's the standard "#! " way to get a script running on both? ln -s
/usr/bin/<prg> /bin/<prg> in Debian (and vice versa in other systems)?
(please cc me)