awk だけで which (w

昨日、find を awk だけで作ろうとして断念したけど、which ならば。

#! /usr/bin/gawk -f
# which.awk - which command
# usage: gawk -f which.awk command
BEGIN {
    for(i = 1; i <= split(ENVIRON["PATH"], a_path, /:/); i++) {
        name = a_path[i] "/" ARGV[1]
        if (getline < name >= 0) {
            print name;
            exit;
        }
    }
}

実行結果はこちら。

$ gawk -f which.awk xgawk
/usr/local/bin/xgawk

find も shell に頼っていいなら作れるかもしれない。

副産物

#見えないじゃないか! by シャア

            BEGIN{;;;for(i=1;
            i<=       split(\
            ENVIRON["PATH"],
            aa,       /:+/);
            i++){n=aa[i]"/"\
            ""        "#""#"\
            ARGV[1];gsub("#",
               "",    n);
             ;if(     getline  <\
            n>        0){print n;
        exit;             }}}#end