純粋なAWKスクリプトに直接渡されるAWKオプションパラメータを取得できますか?
スクリプト例:
#!/usr/bin/env -S awk -f
BEGIN { if (ARGV[1] == "-h") print "whoop" }
./myscript -h
叫びを印刷したいです。ただし、AWK は最初に -h を取得し、使用法を印刷します。
実行は./myscript -- -h
機能しますが、-fのためにshebangで動作させることはできません。
代わりに、AWKでシェルスクリプトを使用できることを知っています。
答え1
この問題を解決するには、FreeBSDを使用して実行できます。env
またはGNUを使用してください環境>= 8.30 (OPが既に仮定したように) shebangから:
#! /usr/bin/env -S sh -c 'exec awk -f "$0" -- "$@"'
BEGIN { for(i = 1; i < ARGC; i++) print ARGV[i] }
./myscript -h 1 2 3
-h
1
2
3
しかし、これが良い考えであるという意味ではありません。
次のことを試すことができます。
#! /bin/sh
BEGIN { 2>"/dev/null"
exec awk -f "$0" "--" "$@"
}
BEGIN { for(i = 1; i < ARGC; i++) print ARGV[i] }
これはBEGIN
あなたのPATH
。
答え2
GNUがあればawk
これを使うことができます
#!/usr/bin/gawk --exec
BEGIN { print "==>",ARGV[1],"<==" }
サンプルの使用
./a -h
==> -h <==
テストしていませんが、このmawk
バリエーションはこれをサポートするために.GNUの主張-W exec
の代わりに使用しているようですが。--exec
gawk
#!