Awk
繞過 AWK 將選項傳遞給 AWK 腳本
我可以將恰好是 AWK 選項的參數直接傳遞給純 AWK 腳本嗎?
範例腳本:
#!/usr/bin/env -S awk -f BEGIN { if (ARGV[1] == "-h") print "whoop" }
我想
./myscript -h
列印哇。但是 AWK 首先獲取 -h 並列印它的用法。跑步
./myscript -- -h
有效,但我無法獲得 - 因為 -f 而在 shebang 工作。我知道我可以使用帶有 AWK 的 shell 腳本。
為了挑戰,可以使用 FreeBSD
env
或使用 GNU env >= 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
.